为什么这种模式不匹配? ([\\\\甲\\\\ W]第[\\\\W¯¯\\\\ Z])

时间:2016-04-21 17:15:18

标签: java regex pattern-matching

我正在尝试用这种模式替换,所以我需要匹配这个:

String pattern = "[\\\\A\\\\W]its[\\\\W\\\\z]";

我正在解释我的模式的方式是:字符串的开头或非字字符,如空格或逗号,然后是“它”,然后是非单词字符或字符串的结尾。

为什么它在这个字符串中的“它”上不匹配?

its about time

这应该做什么的想法应该检测错误的文字,如“它”,并将它们固定为“它”。

为什么我需要这么多的转义字符才能让vm接受这个模式呢?

1 个答案:

答案 0 :(得分:1)

\\A\\z边界匹配。他们不能进入角色类。如果正确使用它们,即使用两个斜杠而不是四个,正则表达式模式编译器会抛出异常,因为\A\z不能进入[]块。

对非捕获组使用直接|语法:

String pattern = "(?:\\A|\\W)its(?:\\W|\\z)";

Demo.