python中的正则表达式,用于检查字符串中的单词是否不被_AND_,_OR_
之类的单词隔开,而仅由空格隔开。
下划线的意思是单词AND / OR前后的空格。
例如:
1。)foo AND bar
-应该失败
2。)foo AND bar cafe
-应该失败,因为它有_AND_
3。)foo AND bar OR cafe foobar baz
-失败,因为其中包含_AND_/_OR_
4。)foo bar baz foobar
-通过,因为它仅由空格分隔,没有_AND_/_OR_
5。)fooANDbarOR bar
-通过,因为它没有被_AND_/_OR_
隔开。
我知道如何检查单词是否以_AND_/_OR_
->
\W(:?AND|OR)\W
我知道如何检查单词是否用空格隔开->
\w\s
但是我不知道如何将这两种方式结合起来,以使字符串仅用空格分隔,而不用_AND_/_OR_
答案 0 :(得分:1)
您可以使用
^(?:[\w ](?! (AND|OR) ))+$
重复的[\w ]
确保所有字符均为文字字符或空格,仅此而已。在每个字符之后,对(AND|OR)
进行否定的前瞻,以确保这两个都不是独立的单词:
https://regex101.com/r/LyRr5U/2
如果您还想排除独立的单词,请在正则表达式的开头添加正向查找,以确保在字符串中的某些单词字符之间用空格分隔:
^(?=.*\w +\w)(?:[\w ](?! (AND|OR) ))+$