2011-04-25 40 views
1

正則表達式StringJava正則表達式不匹配,任何解釋?

"[Ff][uU][Nn][Cc] " 

匹配輸入:

"fUnC " 

但不是:

"func across(a, b)" 

而且我不明白爲什麼...

我正在測試我的表情這裏: http://www.regexplanet.com/simple/index.html

我發現我(愚蠢)需要我的正則表達式爲"[Ff][uU][Nn][Cc] .*"的比賽。

已解答:如果您正在尋找相當於子匹配的東西,請不要使用便利方法Pattern.Matches(regex, input)。您應該使用Matcher.find()方法。

+0

我不是想匹配整個字符串,只是測試可以在字符串中檢測到符號「func」。 – avgvstvs 2011-04-25 00:47:52

+0

爲什麼不使用選項使正則表達式不區分大小寫? – 2011-04-25 00:49:54

+0

這將是更清潔,但沒有奏效。使用測試網站(以及我自己的代碼),最後得到一個匹配的唯一方法是使用'。*'。 – avgvstvs 2011-04-25 00:56:31

回答

4

當我使用您鏈接到正則表達式測試儀,我看你的正則表達式的工作原理與find()但不匹配()。這是我所期望的 - find()只是在目標字符串中查找正則表達式匹配,而matches()總是嘗試匹配整個字符串。

+1

沒有辦法像困難的方式學習,大聲笑我會改變代碼 – avgvstvs 2011-04-25 01:01:04

0

「[FF] [UU] [NN] [CC]。*」 可以幫助...

+0

它應該匹配不帶''*',因爲'func'匹配模式 – 2011-04-25 00:52:14

+0

我的錯誤是忘記了匹配是懶惰的,當然,我可能匹配部分字符串,但不是全部。它現在正在工作...... – avgvstvs 2011-04-25 00:55:27

+0

是的,但'func across ...'沒有 – 2011-04-25 00:55:39

0

它可以......它工作正常。但你的字符串在那裏,你會看到MATCHES是錯誤的,但replaceFirst和ReplaceAll工作正常。

如果你想匹配是真的

0

您是否也使用正則表達式測試儀,忽略大小寫嘗試添加*?應該有一種方法可以在Java正則表達式匹配器中打開不區分大小寫。

+0

不使用便捷方法'模式.Matches(正則表達式,輸入)'。你只能在手動操作時使用這些標誌。 – avgvstvs 2011-04-25 01:12:48