我正在尝试使用正则表达式(javascript)解析以下句子:
目前我正在尝试:I(\b[a-zA-Z]*\b){0,5}(TV|chocolate|fire)
但它不起作用。我也用\w
进行了一些测试,但没有运气。
我想允许“I”和最后一个词女巫之间的任何单词(最多5个单词)。
答案 0 :(得分:4)
要考虑单词之间的非单词字符,您可以使用
/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 + 1个单词字符({{1} }),最后一个\w+
匹配必须存在的1个或多个非单词字符,以将最后匹配的单词字符与...分开。\W+
- 匹配尾随分隔符答案 1 :(得分:0)
答案 2 :(得分:0)
如果您不关心空格,请使用:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.2.2.Final</version>
</dependency>
答案 3 :(得分:0)
尝试
/I\s+(?:\w+\s+){0,5}(TV|chocolate|fire)/
基于Stefan Kert版本,但依赖于每个额外单词的右侧空格而不是单词边界。
它还接受任何长度和任何有效间距字符的任何有效“单词”(\ w)字符单词(不关心重复)。