abg*_*abg 1 java regex substring matcher pattern-matching
为什么这段代码:
String keyword = "pattern";
String text = "sometextpatternsometext";
String patternStr = "^.*" + keyword + ".*$"; //
Pattern pattern = Pattern.compile(patternStr, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
int start = matcher.start();
int end = matcher.end();
System.out.println("start = " + start + ", end = " + end);
}
Run Code Online (Sandbox Code Playgroud)
start = 0,end = 23
不能正常工作.
但是,这段代码:
String keyword = "pattern";
String text = "sometext pattern sometext";
String patternStr = "\\b" + keyword + "\\b"; //
Pattern pattern = Pattern.compile(patternStr, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
int start = matcher.start();
int end = matcher.end();
System.out.println("start = " + start + ", end = " + end);
}
Run Code Online (Sandbox Code Playgroud)
start = 9,end = 16
工作得很好.
它确实有效.你的模式
^.*pattern.*$
Run Code Online (Sandbox Code Playgroud)
说匹配:
pattern结果是整个输入字符串.如果你只想找到这个单词pattern,那么正则表达式就只是单词本身,或者你发现的,用字边界元字符括起来.