我一直在谷歌上寻找一点,并且无法找到这种特殊的正则表达式。我认为这不是一件小事。
逻辑表达式是这样的:
( (contains #HOUR# AND contains #DATE#)
OR (not contains #HOUR# and not contains #DATE#) )
AND (ends in semicolon)
相关短语应始终以;
结尾,但短语中的任何位置都可以包含任意数量的标点符号。
它还可以包含两个保留字(用#
分隔或任何特殊字符,例如:#HOUR#
和#DATE#
),或者不包含。这意味着如果有一个单词,则另一个单词也应按任何顺序出现在短语中。
例如:
asdasdadadasd -> shouldn't work
asdasdasdaasdasdasda; -> should work
sdasdadas#DATE#-#HOUR#; -> should work
DATE-HOUR; -> should work
sdasdadas#HOUR##DATE#; -> should work
sdasdadas#DATE; -> should work
这就是我已经离开^(^.+?\;$)|((?=.*\b#HOUR#\b)(?=.*\b#DATE#\b)).*
。
但这种表达方式并不起作用。
答案 0 :(得分:3)
您可以使用(参见demo here):
^(?:(?=.*#HOUR#)(?=.*#DATE#)|(?!.*#HOUR#)(?!.*#DATE#)).*;$
<强>解释强>
^(?: (?= .*#HOUR# ) (?= .*#DATE# ) # either contains both '#HOUR#' and '#DATE#'
| (?! .*#HOUR# ) (?! .*#DATE# ) ) # or neither of them
.*;$ # match everything until the ending ';'