我需要确定字符串是否匹配一个子字符串,而不是另一个子字符串。例如,给定子串" john"和" mary",其中" john"必须在场并且" mary"一定不能:
"我的名字是约翰" - >匹配
"我的名字是玛丽" - >没有比赛
"他们的名字是约翰和玛丽" - >没有比赛
请注意,这两个字符串不可互换," john"永远是一个匹配的," mary"必须永远不会匹配,所以它不是简单的异或操作
答案 0 :(得分:3)
这是你的正则表达式:
^(?!mary)(.(?!mary))*john(?!mary)(.(?!mary))*$
好的,我会解释一下,因为你的问题是“如何”。 :)
^
标志着开始
(?!mary)
是一个负面的预测。如果当前位置没有“mary”,则匹配。之后,任何未跟随“mary”的角色都会被吃掉,直到达到“john”。然后整个玛丽检查再次完成,直到结束,标记为美元符号。
答案 1 :(得分:2)
为什么不将这个问题分成两部分?
john
。如果它存在,继续。否则返回false
mary
。如果存在,请返回false
,否则true
现在将两个测试合并为一个方法。