在运行这个程序时,
import java.util.regex.*;
public class PatternExample {
public static final String numbers = "1\n22\n333\n4444\n55555\n666666\n7777777\n88888888\n999999999\n0000000000";
public static void main(String[] args) {
Pattern pattern = Pattern.compile("9.*", Pattern.MULTILINE);
Matcher matcher = pattern.matcher(numbers);
while (matcher.find()) {
System.out.print("Start index: " + matcher.start());
System.out.print(" End index: " + matcher.end() + " ");
System.out.println(matcher.group());
}
}
}
输出是
Start index: 44 End index: 53 999999999
由于 Pattern.MULTILINE
,我希望输出包含零。
我应该怎么做才能包含零?
最佳答案
您需要添加 DOTALL
标志(不需要 MULTILINE
标志,它仅适用于 ^
和 $
的行为):
Pattern pattern = Pattern.compile("9.*", Pattern.DOTALL);
这在 javadoc 中说明
The regular expression
.
matches any character except a line terminator unless theDOTALL
flag is specified.
关于Java 正则表达式程序没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30511391/