我查看了其他类似的问题,但它们在正则表达式测试中无效。
请发布有效的公式。谢谢
答案 0 :(得分:0)
您的正则表达式几乎是正确的,但几乎不需要修改。代替这个,
^(?:\w+\s*){0,20}(food)
您应该使用此
^(\w+\W+){0,19}food
在正则表达式中,您写了{0,20}
,实际上已经可以算出20个单词,而您的食物就变成了第21个单词,因此该单词应该与您在帖子中写到的匹配单词food
的前20个单词不匹配。因此,确切地说,您应该将其更正为{0,19}。
第二个问题是,因为您在正则表达式中写了\w+\s*
,所以如果您的行中包含除了单词字符或空格之外的任何内容(可能是标点符号,句号或感叹号等),那么此正则表达式将不匹配。要覆盖其他任何字符,您应安全使用\W
字符,该字符应与任何非单词字符匹配。
正如某人在评论中所说,您应从正则表达式的开头删除^
以使其匹配,但随后可能会匹配,但不是从前二十个单词开始,而是会找到任何此类单词文本中间的错误模式。因此,请保留插入符号^
(也称为开始锚点),以便仅从前20个字符开始进行匹配。
让我知道这是否是您一直在寻找的东西。