Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么正则表达式模式匹配|&引用;在下面显示的代码中?_Java_Regex - Fatal编程技术网

Java 为什么正则表达式模式匹配|&引用;在下面显示的代码中?

Java 为什么正则表达式模式匹配|&引用;在下面显示的代码中?,java,regex,Java,Regex,嗯。我知道我错过了什么。我只是无法找出我错过了什么。下面提到的模式与“|”匹配,我不知道为什么。有人能解释一下吗。谢谢 我想匹配一个字符。字符集是{、}、[、]、|、,?等等 public static void main(String[] args) { String str = ""; if (str.matches("[\"|`|+|,|;|<|>|?|\\[|\\]|{|}|']")) System.out.println("matches")

嗯。我知道我错过了什么。我只是无法找出我错过了什么。下面提到的模式与“|”匹配,我不知道为什么。有人能解释一下吗。谢谢 我想匹配一个字符。字符集是{、}、[、]、|、,?等等

public static void main(String[] args) {
    String str = "";
    if (str.matches("[\"|`|+|,|;|<|>|?|\\[|\\]|{|}|']"))
        System.out.println("matches");

}
publicstaticvoidmain(字符串[]args){
字符串str=“”;
if(str.matches(“[\”、“[\”、“[\\\\\[\\\]]{124}”]))
System.out.println(“匹配”);
}

您使用的是
[]
来开始和结束表达式,而看起来您使用的是与
()
配套的语法。方括号允许您列出一组匹配的字符,并且
多次出现在您的列表中。括号设置了一个分组,您可以在其中使用
来表示“或”


我认为解决方案是删除那些
|
。你不需要用任何东西分隔方括号内的字符,只需将它们全部列出。

你正在使用
[]
来开始和结束表达式,而看起来你使用的语法与
()
。方括号允许您列出一组匹配的字符,并且
多次出现在您的列表中。括号设置了一个分组,您可以在其中使用
表示“或”


我认为你的解决方案是删除那些
。你不需要用任何东西分隔方括号内的字符,你只需要列出所有字符。

你不需要在正则表达式中使用
符号,因为你使用的是一个字符数组来匹配。基本上,如果你想将某个字符与
a、b、c或d
匹配,这意味着字符串可以包含任何你可以简单地做的字母

String pattern = "[abcd]*"; // * means they can be repeated, for example "aabdcb"
str.matches(pattern);
不需要使用管道。另一方面,如果您想严格地说字符串是
a或b
,您可以使用如下模式

pattern = "(a)|(b)"; // matches either "a" or "b"
希望这能帮你把事情弄清楚一点


您可能想签出以了解有关在正则表达式中使用管道的更多信息。

您不需要在正则表达式中使用
符号,因为您使用的是一个字符数组来匹配。基本上,如果您想将某个内容匹配到
a、b、c或d
,这意味着字符串可以包含这些字母中的任何一个,您只需执行以下操作即可

String pattern = "[abcd]*"; // * means they can be repeated, for example "aabdcb"
str.matches(pattern);
不需要使用管道。另一方面,如果您想严格地说字符串是
a或b
,您可以使用如下模式

pattern = "(a)|(b)"; // matches either "a" or "b"
希望这能帮你把事情弄清楚一点


您可能想查看以了解有关在正则表达式中使用管道的更多信息。

简而言之,您在[]括号中给出了|

方括号[]内的任何字符都将匹配


移除大括号内的所有|

简而言之,您已经在[]括号中给出了|

方括号[]内的任何字符都将匹配


移除大括号内的所有|

您混淆了两种不同的指定备选方案的方法:

  • a(
    []
  • |

选择一种。

您混合了两种不同的指定备选方案的方法:

  • a(
    []
  • |

选择一个。

你说你对|匹配感到惊讶,但你在你想允许的角色集中列出了|吗?你说你对|匹配感到惊讶,但在你想允许的角色集中列出了|吗?哦,亲爱的上帝。我要休息一下。谢谢兄弟。哦,亲爱的上帝。我要休息一下。谢谢兄弟。谢谢你的回答。:)谢谢你的回答wer.:)