正则表达式问题:如果两个单词同时出现在一行中,是否可以匹配 - 但如果它们相隔超过三个单词,则不能匹配?
示例:match 和 apart 应该在“我尝试将单词分开匹配不成功”和“我尝试将两个单词分开匹配不成功”中匹配,但不在“我尝试将三个或更多单词分开匹配不成功”中匹配
谢谢。
正则表达式问题:如果两个单词同时出现在一行中,是否可以匹配 - 但如果它们相隔超过三个单词,则不能匹配?
示例:match 和 apart 应该在“我尝试将单词分开匹配不成功”和“我尝试将两个单词分开匹配不成功”中匹配,但不在“我尝试将三个或更多单词分开匹配不成功”中匹配
谢谢。
每个词都可以用类似的东西来定义\w+\s
。
最多可以写成三个字(\w+\s){0,3}
所以你的正则表达式可能看起来像
/match\s(\w+\s){0,3}apart/
这应该有效:
match\s+(\S+\s){,2}apart
\s
是一个空白字符并且\S
是一个非空白字符。对于单行方面,您可能希望更改\s
为[^\S\n\r]
as \s
does 还包含换行符\n
和\r
.
当然。尽管这取决于您如何定义单词。比如说,您只会将字母视为单词,而将所有非字母视为分隔符:
firstword[^a-zA-Z\r\n]+(?:[a-zA-Z]+[^a-zA-Z\r\n]+){0,2}secondword
[a-zA-Z]
是任何字母字符。[^a-zA-Z\s]
任何非字母、非换行符。这就是它的全部内容。