2011-03-11 71 views
2

我是REGEX的新手,我只是想說「She」和「Shell」,而不是用這個程序(Groovy)。我一直在努力一段時間。REGEX(Groovy)如何使用REGEX =「她」選擇單詞「她」,「殼牌」?

saying = 'She wishes for Shells not ashes' 
println saying 
def pattern = ~/\bShe*\b/ 
def matcher = pattern.matcher(saying) 
def count = matcher.getCount() 
println "Matches = ${count}" 
for (i in 0..<count) { 
    print matcher[i] + " " 
} 

輸出: 她希望貝殼不骨灰 匹配= 1 她

正則表達式並不像Windows CMD如DIR W *列出文件夾或文件開始W.我做了什麼工作錯誤?

當你回答這個問題

回答

4

在正則表達式*非常感謝是同一個通配符(匹配任何字符)。

這是一個量詞修改它之前的任何內容,意思是「零個或多個」。您的正則表達式匹配Sh,後跟零個或多個e。所以它會匹配這些字符串:

Sh 
She 
Shee 
Sheee 
etc... 

什麼你大概的意思是\w*匹配任何單詞字符。

/\bShe\w*\b/ 

另請注意,在正則表達式中,「單詞字符」被認爲是字母,數字或下劃線。因此,一系列的單詞字符與人類語言中的「單詞」不同。實際上,使用正則表達式正確識別單詞實際上並不容易,所以如果您需要匹配特定語言的單詞,則應該使用自然語言處理庫和/或字典,而不是正則表達式。