Java 在两个标记之间获取数据
我有下面的字符串Java 在两个标记之间获取数据,java,regex,matcher,Java,Regex,Matcher,我有下面的字符串 String s = "{s}lorem ipsum{/s} explanation for lorem ipsum {s}dolar sit amet{/s} explanation for dolar sit amet"; 我想用两种方式来解析它。我想获取{s}{/s}标记内的文本和未包含在{s}{/s}中的文本 我尝试了以下代码 String firstRemovePattern = "\\{" + "\\}";
String s = "{s}lorem ipsum{/s}
explanation for lorem ipsum
{s}dolar sit amet{/s}
explanation for dolar sit amet";
我想用两种方式来解析它。我想获取{s}{/s}标记内的文本和未包含在{s}{/s}中的文本
我尝试了以下代码
String firstRemovePattern = "\\{" + "\\}";
String replacedWithFirstPattern = s.replaceAll(firstRemovePattern, "");
但是上面的代码无法获取预期的字符串。我如何才能将其分类?您可以使用此正则表达式分别获取这两个部分:
\{(\w+)\}(.*?){/\1}((?:(?!\{\w+\}).)*)
- 第2组将在标记之间为您提供文本
- 第3组将为您提供标签外的文本
如果您的输入不是以标记开头,请使用:
((?:(?!\{\w+\}).)*)\{(\w+)\}(.*?){/\2}((?:(?!\{\w+\}).)*)
- 第1组+第4组将为您提供标签外的文本
- 第3组将为您提供标签内的文本