我是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开头。我做错了什么?
非常感谢你回答这个问题
答案 0 :(得分:4)
在正则表达式中,*
不与通配符相同(匹配任何字符)。
量词修改了它之前的任何内容,意味着“零或更多”。您的正则表达式与Sh
匹配,后跟零或更多e
。所以它会匹配这些字符串:
Sh
She
Shee
Sheee
etc...
你可能意味着\w*
匹配任何单词字符。
/\bShe\w*\b/
另请注意,在正则表达式中,“单词字符”被视为字母,数字或下划线。因此,一系列单词字符与人类语言中被视为“单词”的字符不同。事实上,仅使用正则表达式正确识别单词并不容易,因此如果您需要匹配特定语言的单词,则应使用自然语言处理库和/或字典而不是正则表达式。