【发布时间】:2018-08-28 01:24:10
【问题描述】:
我使用下面的 RegEx 来识别某个字符串是否由 AND 或 OR 分隔
\W(:?AND|OR)\
示例
输入:~abc[0|1] AND foo 输出:匹配
输入:~secopssc{1,3} AND ~abc_d{3,4}
输出:匹配
同样,我想编写一个正则表达式,它匹配所有由空格而不是AND 或OR 分隔的字符串。
我尝试了以下正则表达式:
^(?=.*\w\W+\w)(?:[\w ](?!\W(AND|OR)\W))+$
这给出了正确的输出:
输入:foo bar 输出:匹配 // 这是正确的,因为 "foo" 和 "bar" 用空格隔开
输入:foo 输出:不匹配 // 这是正确的,因为没有任何内容被空格分隔
但输出不正确:
输入:~abc[0|1] foo 输出:不匹配 // 这是不正确的,因为两个字符串都用空格分隔
输入:~secopssc{1,3} AND ~abc_d{3,4}
输出:不匹配
// 这是不正确的,因为两个字符串都用空格分隔
总结:有什么方法可以检查长字符串是否仅由仅由空格分隔的字符组组成。
有效字符串示例:
foo{1,3} acb[1-2] a foo bar bar(qwer|qwyr)
(有效,因为每个字符块之间都有空格)
【问题讨论】:
-
你想检查一个字符串是否包含空格?
-
只是用空格分隔,而不是用单词 AND / OR (下划线的意思是空格) 例如: foo AND bar 很好; fooANDbar 将不匹配 \W(:?AND|OR)\W
-
fooANDbar 垃圾邮件是否匹配?
-
那么,您对
word的定义是什么?如果您只想检查空格,您可以使用str.split(),甚至不需要正则表达式
标签: python regex python-2.7