为什么 matcher.find()是 true ?明明 regex 里面是 END=,而 input 里面是 ENDING=。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String input = "STARTING=18:00|ENDING=20:00|SLICE_NUMBER=4|";
String regex = ".*END=([^|]+)|";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
System.out.println(matcher.find()); // true
System.out.println(matcher.group(1)); // null
}
}
1
jifengg 2023-06-01 12:57:59 +08:00 1
最后一个竖线“|”,是正则的符号,你要匹配这个字符,需要“\|”,不然就是“或”了
|
2
tjmljw 2023-06-01 13:38:01 +08:00 1
".*END=([^|]+)|" 匹配 ".*END=([^|]+)" 或 空白位置
``` public static void main(String[] args) { String input = "STARTING=18:00|ENDING=20:00|SLICE_NUMBER=4|"; String regex = "随便写点什么|"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(input); int i = 0; while (matcher.find()) { i++; } System.out.println("match: " + i); // match: 44 } ``` 输出 `match: 44`, 因为变量 `input` 中有 `(每个字符前面的空白位置 + 最后一个空白位置) = 44` 个空白位置. |