簡體   English   中英

正則表達式模式匹配多個字符串

[英]Regex pattern matching with multiple strings

對不起。 我對 Regex 模式不太熟悉。

我創建了一個正則表達式模式,如下所示。

String regex = Pattern.quote(value) + ", [NnoneOoff0-9\\-\\+\\/]+|[NnoneOoff0-9\\-\\+\\/]+, "
            + Pattern.quote(value);

此正則表達式模式因 2 組不同的字符串而失敗。

值 = "207e/160";

用例 1 -

channelStr = "207e/160, 149/80"

然后channelStr.matches(regex)返回“true”。

用例 2 -

channelStr = "207e/160, 149/80, 11"

然后channelStr.matches(regex) ,返回“false”。

無法弄清楚為什么? 據我所知,這可能是因為當出現 2 個以上的字符串並用逗號分隔時會涉及多個空格。

不確定我應該為 2 個以上的字符串寫什么應該是正確的模式。

任何幫助將不勝感激。

您可以使用regex101來測試您的 RegEx。 它描述了有助於調試的所有內容。 他們在右下角有一個快速參考部分,你可以用它來弄清楚你可以用例子和東西做什么。

有幾件事,你可以用\\添加文字,所以\\"用於文字雙引號。

如果您希望模式是某物的一種或多種,​​則可以使用+ 這些稱為量詞,可以應用於組、標記等。空白字符的標記是\\s 因此,一個或多個空白字符將是\\s+

很難確切地說出您要做什么,但希望將您指向regex101會有所幫助。 如果您想提供當前 RegEx 的示例、您想要匹配的內容以及用於測試它的字符串,我很樂意為您提供示例。

如果你打印你的圖案,它是:

\Q207e/160\E, [NnoneOoff0-9\-\+\/]+|[NnoneOoff0-9\-\+\/]+, \Q207e/160\E

它包括一個交替| 在左側和右側都匹配一個強制性逗號。

使用matches(),應該匹配整個字符串, 207e/160, 149/80就是這種情況207e/160, 149/80所以這是一個匹配。

僅對於這個字符串207e/160, 149/80, 11有 2 個逗號,因此您確實獲得了字符串第一部分的部分匹配,但您不匹配整個字符串,因此matches() 返回 false。

查看此正則表達式演示中的匹配項。

^(?:[NnoneOoff0-9\\-\\+\\/]+ *(?:, *(?!$)|$))+$

^開始
(?: ... )定義項目及其分隔符的非捕獲組。 在除最后一項之外的每一項之后,必須出現分隔符 (,)。 逗號前后可以出現空格(一個、幾個或無),用*指定。 該組可以在字符串末尾出現一次或多次,由組右括號后的+量詞指定。

Regex101 測試

在此處輸入圖片說明

暫無
暫無

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

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