运行此程序时,
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
,我预计输出包含零。
我应该怎么做才能包含零?
答案 0 :(得分:3)
您需要添加call start cmd.exe /C startComponent.bat`
标记(并且不需要DOTALL
标记,该标记仅适用于MULTILINE
和^
的行为):< / p>
$
这在javadoc
中说明正则表达式
Pattern pattern = Pattern.compile("9.*", Pattern.DOTALL);
匹配除行终止符之外的任何字符,除非指定了.
标志。
答案 1 :(得分:2)
您正在寻找Pattern.DOTALL
,请使用以下内容:
Pattern pattern = Pattern.compile("9.*", Pattern.DOTALL);
此处不需要Pattern.MULTILINE
,因为您没有使用任何开始^
和结束$
锚点。
答案 2 :(得分:2)
您需要添加标记Pattern.DOTALL
。默认情况下,.
does not match line terminators。