[英]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 個以上的字符串寫什么應該是正確的模式。
任何幫助將不勝感激。
如果你打印你的圖案,它是:
\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\\-\\+\\/]+ *(?:, *(?!$)|$))+$
^
開始
(?: ... )
定義項目及其分隔符的非捕獲組。 在除最后一項之外的每一項之后,必須出現分隔符 (,)。 逗號前后可以出現空格(一個、幾個或無),用*
指定。 該組可以在字符串末尾出現一次或多次,由組右括號后的+
量詞指定。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.