python - 正则表达式检查字符串中的单词仅由空格分隔,而不是由_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_
解决方案
您可以使用
^(?:[\w ](?! (AND|OR) ))+$
重复[\w ]
确保所有字符都是单词字符或空格,仅此而已。在每个字符之后,负前瞻(AND|OR)
以确保这些都不是独立的单词:
https://regex101.com/r/LyRr5U/2
如果您还想排除独立单词,请在正则表达式的开头添加肯定的前瞻,以确保字符串中某处有一些由空格分隔的单词字符:
^(?=.*\w +\w)(?:[\w ](?! (AND|OR) ))+$
推荐阅读
- android - 在 Activity 和 ViewModel 之间传递数据
- html - 带有弹性框的三角形留下 1px 的间隙
- python - 继承类中定义的变量和函数在基类中运行
- c# - 用于 UWP 的 Telerik:Windows.UI.Xaml.UnhandledException
- java - 机器人从剪贴板多次打印相同的字符串
- python - 如何在文件名中使用前导零递增数字
- ios - 为什么将键盘类型“十进制键盘”从应用程序更改为另一个?
- java - 无法使 getResourceAsStream() 加载 .properties 资源 - 使用 Netbeans IDE
- rest - 网络请求失败反应本机,在邮递员中工作
- php - 在具有唯一列的数据库中插入时可以使用 try/catch 而不是检查重复项吗?