Java字符串 - 获取(但不包括)两个正则表达式之间的所有内容?

11 java regex string split

在Java中,是否有一种通过在任一侧指定正则表达式分隔符来提取子字符串的简单方法,而不包括最终子字符串中的分隔符?

例如,如果我有这样的字符串:

<row><column>Header text</column></row>
Run Code Online (Sandbox Code Playgroud)

提取子字符串的最简单方法是什么:

Header text
Run Code Online (Sandbox Code Playgroud)

请注意,子字符串可能包含换行符...

谢谢!

Aar*_*paa 24

写这样的正则表达式:

"(regex1)(.*)(regex2)"
Run Code Online (Sandbox Code Playgroud)

...并从匹配器中拉出中间组(处理模式中想要使用Pattern.DOTALL的换行符).

使用您的示例,我们可以编写如下程序:

package test;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Regex {

    public static void main(String[] args) {
        Pattern p = Pattern.compile(
                "<row><column>(.*)</column></row>",
                Pattern.DOTALL
            );

        Matcher matcher = p.matcher(
                "<row><column>Header\n\n\ntext</column></row>"
            );

        if(matcher.matches()){
            System.out.println(matcher.group(1));
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

哪个在运行时打印出来:

Header


text
Run Code Online (Sandbox Code Playgroud)

  • Anna,这就是为什么使用适当的工具来解析XML更容易:XML解析器.XML不是常规语言,因此不要尝试使用正则表达式对其进行解析. (2认同)