首页 > 解决方案 > 正则表达式检查字符串中的单词仅由空格分隔,而不是由_AND_/_OR_ python

问题描述

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_

标签: pythonregexpython-2.7

解决方案


您可以使用

^(?:[\w ](?! (AND|OR) ))+$

重复[\w ]确保所有字符都是单词字符或空格,仅此而已。在每个字符之后,负前瞻(AND|OR)以确保这些都不是独立的单词:

https://regex101.com/r/LyRr5U/2

如果您还想排除独立单词,请在正则表达式的开头添加肯定的前瞻,以确保字符串中某处有一些由空格分隔的单词字符:

^(?=.*\w +\w)(?:[\w ](?! (AND|OR) ))+$

推荐阅读