我是 REGEX 的新手,我试图只获取“She”和“Shell”这两个词,而不是这个程序 (Groovy) 的 Ember 。我已经研究了一段时间。
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 开头的文件夹或文件。我做错了什么?
非常感谢你回答这个问题
最佳答案
在正则表达式中,*
与通配符不相同(匹配任何字符)。
它是一个量词,修饰紧接在它之前的任何内容,意思是“零个或多个”。您的正则表达式匹配 Sh
后跟零个或多个 e
。所以它将匹配这些字符串:
Sh
She
Shee
Sheee
etc...
您的意思可能是 \w*
来匹配任何单词字符。
/\bShe\w*\b/
另请注意,在正则表达式中,“单词字符”被视为字母、数字或下划线。因此,单词字符的序列与人类语言中所谓的“单词”不同。仅使用正则表达式来正确识别单词实际上并不容易,因此如果您需要匹配特定语言的单词,您应该使用自然语言处理库和/或字典而不是正则表达式。
关于regex - 如何使用 REGEX(Groovy)选择单词 "She","Shell"和 REGEX = "She"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5278188/