在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)