正则表达式允许一个句子中的多个工作
Regex allow multiple work in a sentence
我正在尝试使用正则表达式解析以下句子 (javascript):
- 我想要一台电视
- 我想要一些巧克力
- 我需要火
目前我正在尝试:I(\b[a-zA-Z]*\b){0,5}(TV|chocolate|fire)
但它不起作用。我也用 \w
做了一些测试,但没有成功。
我想允许 "I" 和最后一个词 之间的任何词(最多 5 个词)是预定义的。
你需要在 I 后面添加空格。否则它不会捕获整个句子。
I(\b[a-zA-Z ]*\b){0,5}(TV|chocolate|fire)
我想测试正则表达式的网站是 regexr
要考虑单词之间的非单词字符,您可以使用
/I(?:\W+\w+){0,5}\W+(?:TV|chocolate|fire)/
重点是您添加了单词边界,但没有考虑 "words".
之间的空格、标点符号等(所有其他非单词字符)
图案详情:
I
- 匹配左分隔符
(?:\W+\w+){0,5}\W+
- 匹配 0 到 5 个序列(由于 limiting quantifier {n,m}
)1+ 个非单词字符(\W+
)和 1+ 个单词字符(\w+
),最后的 \W+
匹配 1 个或多个必须存在的非单词字符,以将最后匹配的单词字符与... 分开
(?:TV|chocolate|fire)
- 匹配结尾分隔符
如果您不关心空格,请使用:
/I(\s[a-zA-Z]*\s?){0,5}(TV|chocolate|fire)/
尝试
/I\s+(?:\w+\s+){0,5}(TV|chocolate|fire)/
基于 Stefan Kert 版本,但依赖于每个额外单词的右侧空格而不是单词边界。
它也接受任何长度的任何有效 "word" (\w) 字符词和任何有效的空格字符(不考虑重复)。
我正在尝试使用正则表达式解析以下句子 (javascript):
- 我想要一台电视
- 我想要一些巧克力
- 我需要火
目前我正在尝试:I(\b[a-zA-Z]*\b){0,5}(TV|chocolate|fire)
但它不起作用。我也用 \w
做了一些测试,但没有成功。
我想允许 "I" 和最后一个词 之间的任何词(最多 5 个词)是预定义的。
你需要在 I 后面添加空格。否则它不会捕获整个句子。
I(\b[a-zA-Z ]*\b){0,5}(TV|chocolate|fire)
我想测试正则表达式的网站是 regexr
要考虑单词之间的非单词字符,您可以使用
/I(?:\W+\w+){0,5}\W+(?:TV|chocolate|fire)/
重点是您添加了单词边界,但没有考虑 "words".
之间的空格、标点符号等(所有其他非单词字符)图案详情:
I
- 匹配左分隔符(?:\W+\w+){0,5}\W+
- 匹配 0 到 5 个序列(由于 limiting quantifier{n,m}
)1+ 个非单词字符(\W+
)和 1+ 个单词字符(\w+
),最后的\W+
匹配 1 个或多个必须存在的非单词字符,以将最后匹配的单词字符与... 分开
(?:TV|chocolate|fire)
- 匹配结尾分隔符
如果您不关心空格,请使用:
/I(\s[a-zA-Z]*\s?){0,5}(TV|chocolate|fire)/
尝试
/I\s+(?:\w+\s+){0,5}(TV|chocolate|fire)/
基于 Stefan Kert 版本,但依赖于每个额外单词的右侧空格而不是单词边界。
它也接受任何长度的任何有效 "word" (\w) 字符词和任何有效的空格字符(不考虑重复)。