【问题标题】:How to match character groups separated by spaces using RegEx?如何使用 RegEx 匹配由空格分隔的字符组?
【发布时间】:2018-08-28 01:24:10
【问题描述】:

我使用下面的 RegEx 来识别某个字符串是否由 ANDOR 分隔

\W(:?AND|OR)\

示例

输入:~abc[0|1] AND foo
输出:匹配
输入:~secopssc{1,3} AND ~abc_d{3,4}
输出:匹配

同样,我想编写一个正则表达式,它匹配所有由空格而不是ANDOR 分隔的字符串。

我尝试了以下正则表达式:

^(?=.*\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


【解决方案1】:

这解决了我的问题:

k = "foo{1,3} acb[1-2] AND a foo bar bar(qwer|qwyr)"
if not re.search(r'\W(:?AND|OR)\W', k) and k.strip().find(" ")!=-1:
      print "not separated by AND and OR but by space"
else:
      print "separated by AND/OR"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多