我正在尝试使用正则表达式(javascript)解析以下句子:
目前,我正在尝试:
I(\b[a-zA-Z]*\b){0,5}(TV|chocolate|fire)
,但是它不起作用。我也用\w
做了一些测试,但是没有运气。我想允许预定义“I”和最后一个单词之间的任何单词(最多5个单词)。
最佳答案
要说明单词之间的非单词字符,您可以使用
/I(?:\W+\w+){0,5}\W+(?:TV|chocolate|fire)/
见regex demo
关键是您添加了单词边界,但没有考虑“单词”之间的空格,标点符号等(所有其他非单词字符)。
模式详细信息:
I
-匹配左定界符(?:\W+\w+){0,5}\W+
-匹配0到5个序列(由于limiting quantifier {n,m}
),其中包含1+个非单词字符(\W+
)和其后的1+个单词字符(\w+
),最后的\W+
匹配1个或多个非单词字符必须存在才能将最后匹配的单词字符与... (?:TV|chocolate|fire)
-匹配尾随定界符