簡體   English   中英

為什么正則表達式模式在以下顯示的代碼中匹配“ |”?

[英]Why is regex Pattern matching “|” in the below displayed code?

好。 我知道我想念一些東西。 我只是無法找出我所缺少的。 下面提到的模式匹配“ |” 而且我不知道為什么。 有人可以解釋一下。 謝謝。 我要匹配一個字符。 字符集為{,},[,],| ,? 等等

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

}

當看起來像您正在使用()附帶的語法時,就可以使用[]來開始和結束表達式。 方括號讓您列出一堆匹配的字符,然后| 在您的列表中很多次。 括號內設置了一個分組,您可以在其中使用| 表示“或”。

我認為您的解決方案是刪除那些| 您無需將方括號內的字符與任何東西分開,只需列出所有字符即可。

您不需要使用| 登錄正則表達式,因為您要使用匹配的字符數組。 基本上,如果您想將某些內容與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"

希望這對您有所幫助。

您可能想查看此頁面,以了解有關在正則表達式中使用管道的更多信息。

簡而言之,您給了| 在[]括號中。

方括號[]中的任何字符都將匹配。

刪除所有| 大括號內。

您正在混合兩種不同的指定替代方法:

選一個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM