regex - 如何使用 REGEX(Groovy)选择单词 "She","Shell"和 REGEX = "She"?

标签 regex groovy

我是 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/

相关文章:

java - 确定字符串模式 "a+b"

javascript - 正确地将 Groovy 列表传递给 GSP 中的 Javascript 代码

java - 验证 IP 地址(带掩码)

regex - 如何使用两个正则表达式捕获组来创建两个 pandas 列

ruby - 我如何学习 ruby​​ 的正则表达式?

python - 获取包含换行符的列表

eclipse - 如何在 Groovy 控制台(GroovyStarter)和 GGTS/Eclipse 控制台中输出和显示 Unicode

ant - Groovy 2.3的Gradle构建由于缺少依赖关系org/apache/tools/ant/BuildLogger而引发NoClassDefFoundError

java - Gradle:使用项目类路径执行 Groovy 交互式 shell

regex - 如何在 Google Docs re2 表达式中筛选双引号?