[英]Java regex to check if a pattern exists
我試圖找出一個字符串中是否存在模式。
我要檢查的模式是:
以空格或“#”開頭的字符串,
然后使用特定字符串“value1”,后跟空格或制表符,
然后“value2”再次空格或制表符,
以“value3”結尾。
這是一個要檢查的示例字符串:
String str = "# value1 values2 value3";
我嘗試了以下正則表達式 ,但它不起作用:
str.matches("^\\s+#\\s+value1\\s+value2\\s+value3");
以上模式總是讓我false
。 請幫助正則表達。 任何幫助將非常感激。
試試這個: -
str.matches("^[ #]value1\\s+value2\\s+value3$");
[ #]
- 匹配空格或#
\\\\s+
- 匹配1個或多個空格。 因此,它將匹配空格或制表符
注 : -您已經values2
而不是value2
在你的字符串。
此外,您發布的示例字符串在起始處同時包含space
和#
。 但是你說字符串以space
或#
開頭。 所以,它會匹配你的字符串,如果你在第一個#
之后刪除那個空格,或者在你的空間之前刪除#
,這是根據你所寫的。
如果你想在字符串的開頭匹配一個space
和一個#
,就像你發布的當前String
。 你需要使用這個正則表達式: -
str.matches("^[ #]\\svalue1\\s+value2\\s+value3$");
好吧,我現在可以告訴你,那個正則表達式將失敗,因為它需要在#
之前的空格
嘗試
str.matches("^#?\\s+value1\\s+value2\\s+value3$");
正則表達式應匹配"# value1 value2 value3"
或" value1 value2 value3"
與可變數量的空格
試試這個正則表達式(\\s+|\\s?#\\s?).*value1.*(\\s+|\\t).*value2.*(\\s+|\\t).*value3.*
即使你有任何地方都有空格。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.