import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "(<(?P<tag1>\\w+)>)\\n(?'tag2'[\\w\\<\\>.]+)\\n<\\/(?P=tag1)>";
final String string = "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n"
+ "<Annotations>\n"
+ "<Version>\n"
+ "1\n"
+ "</Version>\n"
+ "<Container>\n"
+ "<PageNumber>\n"
+ "1\n"
+ "</PageNumber>\n"
+ "<Size>\n"
+ "<Width>\n"
+ "3979.2\n"
+ "</Width>\n"
+ "<Height>\n"
+ "5611.2\n"
+ "</Height>\n"
+ "</Size>\n"
+ "<Offset>\n"
+ "<X>\n"
+ "0\n"
+ "</X>\n"
+ "<Y>\n"
+ "0\n"
+ "</Y>\n"
+ "</Offset>\n"
+ "<CalibrationScale>\n"
+ "1\n"
+ "</CalibrationScale>\n"
+ "<IsVisible>\n"
+ "true\n"
+ "</IsVisible>\n"
+ "<IsEnabled>\n"
+ "true\n"
+ "</IsEnabled>\n"
+ "<UserData>\n"
+ "</UserData>\n"
+ "<CalibrationUnit>\n"
+ "0\n"
+ "</CalibrationUnit>\n"
+ "<Objects>\n"
+ "<OnLoad>\n"
+ "<RotateAngle>\n"
+ "0\n"
+ "</RotateAngle>\n"
+ "<ScaleX>\n"
+ "1\n"
+ "</ScaleX>\n"
+ "<ScaleY>\n"
+ "1\n"
+ "</ScaleY>\n"
+ "<Offset>\n"
+ "<X>\n"
+ "0\n"
+ "</X>\n"
+ "<Y>\n"
+ "0\n"
+ "</Y>\n"
+ "</Offset>\n"
+ "</OnLoad>\n"
+ "<Object>\n"
+ "<ObjectType>\n"
+ "Leadtools.Annotations.Engine.AnnStampObject\n"
+ "</ObjectType>\n"
+ "<AssemblyName>\n"
+ "Leadtools.Annotations.Engine\n"
+ "</AssemblyName>\n"
+ "<OnLoad>\n"
+ "<RotateAngle>\n"
+ "0\n"
+ "</RotateAngle>\n"
+ "<ScaleX>\n"
+ "1\n"
+ "</ScaleX>\n"
+ "<ScaleY>\n"
+ "1\n"
+ "</ScaleY>\n"
+ "<Offset>\n"
+ "<X>\n"
+ "0\n"
+ "</X>\n"
+ "<Y>\n"
+ "0\n"
+ "</Y>\n"
+ "</Offset>\n"
+ "</OnLoad>\n"
+ "<IsVisible>\n"
+ "true\n"
+ "</IsVisible>\n"
+ "<IsSelected>\n"
+ "false\n"
+ "</IsSelected>\n"
+ "<IsLocked>\n"
+ "false\n"
+ "</IsLocked>\n"
+ "<Password>\n"
+ "</Password>\n"
+ "<GroupName/>\n"
+ "<Hyperlink/>\n"
+ "<FixedStateOperations>\n"
+ "8\n"
+ "</FixedStateOperations>\n"
+ "<RotateGripper>\n"
+ "240\n"
+ "</RotateGripper>\n"
+ "<RotateCenter>\n"
+ "<X>\n"
+ "NaN\n"
+ "</X>\n"
+ "<Y>\n"
+ "NaN\n"
+ "</Y>\n"
+ "</RotateCenter>\n"
+ "<Points>\n"
+ "<Point>\n"
+ "<X>\n"
+ "2400\n"
+ "</X>\n"
+ "<Y>\n"
+ "741.6\n"
+ "</Y>\n"
+ "</Point>\n"
+ "<Point>\n"
+ "<X>\n"
+ "4029.6\n"
+ "</X>\n"
+ "<Y>\n"
+ "741.6\n"
+ "</Y>\n"
+ "</Point>\n"
+ "<Point>\n"
+ "<X>\n"
+ "4029.6\n"
+ "</X>\n"
+ "<Y>\n"
+ "1380\n"
+ "</Y>\n"
+ "</Point>\n"
+ "<Point>\n"
+ "<X>\n"
+ "2400\n"
+ "</X>\n"
+ "<Y>\n"
+ "1380\n"
+ "</Y>\n"
+ "</Point>\n"
+ "</Points>\n"
+ "<Fill/>\n"
+ "<Labels>\n"
+ "<Label>\n"
+ "<Key>\n"
+ "AnnObjectName\n"
+ "</Key>\n"
+ "<IsVisible>\n"
+ "false\n"
+ "</IsVisible>\n"
+ "<LabelRestriction>\n"
+ "0\n"
+ "</LabelRestriction>\n"
+ "<Text/>\n"
+ "<OriginalPosition>\n"
+ "<X>\n"
+ "2400\n"
+ "</X>\n"
+ "<Y>\n"
+ "741.6\n"
+ "</Y>\n"
+ "</OriginalPosition>\n"
+ "<Offset>\n"
+ "<X>\n"
+ "NaN\n"
+ "</X>\n"
+ "<Y>\n"
+ "NaN\n"
+ "</Y>\n"
+ "</Offset>\n"
+ "<Background/>\n"
+ "<Foreground>\n"
+ "<SolidColorBrush>\n"
+ "<Color>\n"
+ "Transparent \n"
+ "</Color>\n"
+ "</SolidColorBrush>\n"
+ "</Foreground>\n"
+ "<Font>\n"
+ "<FamilyName>\n"
+ "Arial\n"
+ "</FamilyName>\n"
+ "<Size>\n"
+ "11\n"
+ "</Size>\n"
+ "<Stretch>\n"
+ "Normal\n"
+ "</Stretch>\n"
+ "<Weight>\n"
+ "Normal\n"
+ "</Weight>\n"
+ "<Style>\n"
+ "Normal\n"
+ "</Style>\n"
+ "<TextDecoration>\n"
+ "0\n"
+ "</TextDecoration>\n"
+ "</Font>\n"
+ "<OffsetHeight>\n"
+ "true\n"
+ "</OffsetHeight>\n"
+ "</Label>\n"
+ "</Labels>\n"
+ "<Stroke>\n"
+ "<Fill>\n"
+ "<SolidColorBrush>\n"
+ "<Color>\n"
+ "Transparent\n"
+ "</Color>\n"
+ "</SolidColorBrush>\n"
+ "</Fill>\n"
+ "<Thickness>\n"
+ "0\n"
+ "</Thickness>\n"
+ "<MiterLimit>\n"
+ "0\n"
+ "</MiterLimit>\n"
+ "<DashCap>\n"
+ "Flat\n"
+ "</DashCap>\n"
+ "<StartLineCap>\n"
+ "Round\n"
+ "</StartLineCap>\n"
+ "<EndLineCap>\n"
+ "Round\n"
+ "</EndLineCap>\n"
+ "<LineJoin>\n"
+ "Round\n"
+ "</LineJoin>\n"
+ "<DashOffset>\n"
+ "0\n"
+ "</DashOffset>\n"
+ "<Dashes/>\n"
+ "<StrokeAlignment>\n"
+ "Center\n"
+ "</StrokeAlignment>\n"
+ "</Stroke>\n"
+ "<SelectionStroke>\n"
+ "<Fill>\n"
+ "<SolidColorBrush>\n"
+ "<Color>\n"
+ "Blue\n"
+ "</Color>\n"
+ "</SolidColorBrush>\n"
+ "</Fill>\n"
+ "<Thickness>\n"
+ "4\n"
+ "</Thickness>\n"
+ "<MiterLimit>\n"
+ "0\n"
+ "</MiterLimit>\n"
+ "<DashCap>\n"
+ "Flat\n"
+ "</DashCap>\n"
+ "<StartLineCap>\n"
+ "Round\n"
+ "</StartLineCap>\n"
+ "<EndLineCap>\n"
+ "Round\n"
+ "</EndLineCap>\n"
+ "<LineJoin>\n"
+ "Round\n"
+ "</LineJoin>\n"
+ "<DashOffset>\n"
+ "0\n"
+ "</DashOffset>\n"
+ "<Dashes/>\n"
+ "<StrokeAlignment>\n"
+ "Center\n"
+ "</StrokeAlignment>\n"
+ "</SelectionStroke>\n"
+ "<Font>\n"
+ "<FamilyName>\n"
+ "Arial\n"
+ "</FamilyName>\n"
+ "<Size>\n"
+ "11\n"
+ "</Size>\n"
+ "<Stretch>\n"
+ "Normal\n"
+ "</Stretch>\n"
+ "<Weight>\n"
+ "Normal\n"
+ "</Weight>\n"
+ "<Style>\n"
+ "Normal\n"
+ "</Style>\n"
+ "<TextDecoration>\n"
+ "0\n"
+ "</TextDecoration>\n"
+ "</Font>\n"
+ "<ObjectId>\n"
+ "-16\n"
+ "</ObjectId>\n"
+ "<ObjectTag/>\n"
+ "<Metadata>\n"
+ "<Item>\n"
+ "<Key>\n"
+ "Subject\n"
+ "</Key>\n"
+ "<Value>\n"
+ "Annotate_1 \n"
+ "</Value>\n"
+ "</Item>\n"
+ "<Item>\n"
+ "<Key>\n"
+ "Author\n"
+ "</Key>\n"
+ "<Value>\n"
+ "Author1\n"
+ "</Value>\n"
+ "</Item>\n"
+ "<Item>\n"
+ "<Key>\n"
+ "Modified\n"
+ "</Key>\n"
+ "<Value>\n"
+ "2021-03-04 21:50:12\n"
+ "</Value>\n"
+ "</Item>\n"
+ "<Item>\n"
+ "<Key>\n"
+ "Title\n"
+ "</Key>\n"
+ "<Value>\n"
+ "cvadmin \n"
+ "</Value>\n"
+ "</Item>\n"
+ "<Item>\n"
+ "<Key>\n"
+ "Content\n"
+ "</Key>\n"
+ "<Value>\n"
+ "SIGN_cvadmin 3/4/2021 9:49:54 PM\n"
+ "</Value>\n"
+ "</Item>\n"
+ "<Item>\n"
+ "<Key>\n"
+ "Created\n"
+ "</Key>\n"
+ "<Value>\n"
+ "2021-03-04 21:50:12\n"
+ "</Value>\n"
+ "</Item>\n"
+ "</Metadata>\n"
+ "<Reviews/>\n"
+ "<UserId/>\n"
+ "<LayerId/>\n"
+ "<Opacity>\n"
+ "1\n"
+ "</Opacity>\n"
+ "<Picture>\n"
+ "<PictureData>\n"
+ "Null\n"
+ "</PictureData>\n"
+ "<PictureSource>\n"
+ "D:/GitLeadtools20And21MergedWorkSpace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/CVWeb/Temp/Apurba DB/272/12102/2.png\n"
+ "</PictureSource>\n"
+ "<PictureWidth>\n"
+ "4710.973077661264\n"
+ "</PictureWidth>\n"
+ "<PictureHeight>\n"
+ "1295.5175963568474\n"
+ "</PictureHeight>\n"
+ "</Picture>\n"
+ "</Object>\n"
+ "</Objects>\n"
+ "</Container>\n"
+ "</Annotations>";
final String subst = "<${tag1}>\\n\\t${tag2}\\n</${tag1}>";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);
// The substituted value will be contained in the result variable
final String result = matcher.replaceAll(subst);
System.out.println("Substitution result: " + result);
}
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Java, please visit: https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html