如何做REGEX(Groovy)用REGEX =“她”选择单词“She”,“Shell”?

时间:2011-03-11 20:50:42

标签: regex groovy

我是REGEX的新手,我试图只获得“她”和“壳牌”的字样,而不是这个程序的灰烬(Groovy)。我已经工作了一段时间。

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 她

REGEX不像Windows CMD那样工作,例如dir W *列出文件夹或文件以W开头。我做错了什么?

非常感谢你回答这个问题

1 个答案:

答案 0 :(得分:4)

在正则表达式中,* 与通配符相同(匹配任何字符)。

量词修改了它之前的任何内容,意味着“零或更多”。您的正则表达式与Sh匹配,后跟零或更多e。所以它会匹配这些字符串:

Sh
She
Shee
Sheee
etc...

你可能意味着\w*匹配任何单词字符。

/\bShe\w*\b/

另请注意,在正则表达式中,“单词字符”被视为字母,数字或下划线。因此,一系列单词字符与人类语言中被视为“单词”的字符不同。事实上,仅使用正则表达式正确识别单词并不容易,因此如果您需要匹配特定语言的单词,则应使用自然语言处理库和/或字典而不是正则表达式。