
为什么 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 年 6 月 1 日 最后一个竖线“|”,是正则的符号,你要匹配这个字符,需要“\|”,不然就是“或”了 |
2 tjmljw 2023 年 6 月 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` 个空白位置. |