确定。我知道我错过了什么。我只是无法找出我所缺少的东西。下面提到的模式匹配“|”我不知道为什么。有人可以解释一下。谢谢。 我想匹配一个角色。字符集是{,},[,],|,?等
public static void main(String[] args) {
String str = "";
if (str.matches("[\"|`|+|,|;|<|>|?|\\[|\\]|{|}|']"))
System.out.println("matches");
}
答案 0 :(得分:3)
当您使用[]
语法时,您正在使用()
来启动和结束表达式。方括号允许您列出一堆匹配的字符,|
多次出现在列表中。括号中设置了一个分组,您可以使用|
来表示“或”。
我认为您的解决方案是删除|
。你不要将方括号内的字符与任何东西分开,只需将它们全部列出即可。
答案 1 :(得分:2)
您不需要在正则表达式中使用|
符号,因为您正在使用要匹配的字符数组。基本上,如果你想匹配某些东西a,b,c or d
,这意味着字符串可以包含任何这些字母,你可以简单地做
String pattern = "[abcd]*"; // * means they can be repeated, for example "aabdcb"
str.matches(pattern);
无需使用管道。另一方面,如果你想严格说一个字符串是a or b
,你可以使用像
pattern = "(a)|(b)"; // matches either "a" or "b"
希望这能为你解决一些问题。
您可能需要查看this page以了解有关在正则表达式中使用管道的更多信息。
答案 2 :(得分:0)
简而言之,您在[]括号中提供了 | 。
方括号[]内的任何字符都将匹配。
删除大括号内的所有 | 。
答案 3 :(得分:0)