在两个标签之间获取数据

Fetch datas between two tags

我得到了以下字符串

   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+)\}(.*?){/}((?:(?!\{\w+\}).)*)
  • 第 2 组会在标签之间为您提供文本。
  • 第 3 组会给你标签外的文字。

RegEx Demo


如果您的输入不是以标签开头,则使用:

((?:(?!\{\w+\}).)*)\{(\w+)\}(.*?){/}((?:(?!\{\w+\}).)*)
  • 第 1 组 + 第 4 组将为您提供标签外的文字。
  • 第 3 组将为您提供标签内的文字。