簡體   English   中英

用於檢查模式是否存在的Java正則表達式

[英]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.

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