如果是字符串,我必须在单个正则表达式中检查 :
无论两个子串的位置如何。
我一直在尝试使用lookaorund表达式,但无法检查substring-2是否在substring-1之后或之前。
(?<!substring-2.*)(?!.*substring-2)substring-1
如果substring-2不在substring-1之前和之后,则此表达式适合我的情况。因此,如果在正则表达式之前和之后出现substring-2,那么只有在之后或之前出现才会起作用。
如何将其转换为OR条件,以便将lookaorund表达式合并为OR?
注意:输入字符串将是多行的,因此它可以包含换行符。
注意:正则表达式必须是.NET兼容的
答案 0 :(得分:3)
您可以在字符串的开头执行检查,然后将substring-1
存储在第一个捕获组中:
(?s)^(?!.*substring-2).*(substring-1)
(?s)
只是打开dot matches all
(甚至换行)标志的内联方式。
答案 1 :(得分:2)
您只能使用一个否定前瞻 - demo。
^(?!.*substring-2).*substring-1
答案 2 :(得分:1)
实现这一目标的一般方法是连接&#34;规则&#34;与前瞻:
^(?=.*substring-1)(?!.*substring-2)
如果您希望substring-3
失败。然后添加另一个前瞻:
^(?=.*substring-1)(?!.*substring-2)(?!.*substring-3)
请勿忘记s
修饰符,以便将换行符与点匹配。