我需要逻辑和在正则表达式。
类似的
杰克和詹姆斯
同意以下字符串
'嗨,杰克,我是詹姆斯' '嗨,詹姆斯,我是杰克'
我需要逻辑和在正则表达式。
类似的
杰克和詹姆斯
同意以下字符串
'嗨,杰克,我是詹姆斯' '嗨,詹姆斯,我是杰克'
当前回答
我要写的命令说明:-
. 表示任何字符、数字都可以代替。
*表示零次或多次在它前面写的东西。
|表示“或”。
So,
james.*jack
会搜索詹姆斯,然后任意数量的角色,直到杰克出现。
既然你想要任何一个杰克。詹姆斯还是詹姆斯,杰克
于是命令:
jack.*james|james.*jack
其他回答
你可以:
\bjack\b.*\bjames\b|\bjames\b.*\bjack\b
我要写的命令说明:-
. 表示任何字符、数字都可以代替。
*表示零次或多次在它前面写的东西。
|表示“或”。
So,
james.*jack
会搜索詹姆斯,然后任意数量的角色,直到杰克出现。
既然你想要任何一个杰克。詹姆斯还是詹姆斯,杰克
于是命令:
jack.*james|james.*jack
Vim有一个分支操作符\&,在以任何顺序搜索包含一组单词的行时非常有用。此外,扩展所需的单词集是微不足道的。
例如,
/ *杰克\ &。*詹姆斯
将以任意顺序匹配包含jack和james的行。
有关用法的更多信息,请参阅这个答案。我不知道有任何其他实现分支的正则表达式;这个运算符甚至没有在正则表达式维基百科条目中被记录。
Try:
james.*jack
如果你同时想要两者,那么:
james.*jack|jack.*james
你可以使用regex的量词特性,因为不一定总是支持查找。
(\bjames\b){1,}.*(\bjack\b){1,}|(\bjack\b){1,}.*(\bjames\b){1,}