【问题标题】:Python / Regex: exclude everything except one thingPython / 正则表达式:排除除一件事之外的所有内容
【发布时间】:2010-02-02 15:34:25
【问题描述】:

假设我有这些字符串:

a = "hello"
b = "-hello"
c = "-"
d = "hell-o"
e = "    - "

如何只匹配-(String C)?我试过if "-" in something,但显然这是不正确的。有人可以建议吗?


假设我们将这些字符串放入一个列表中,循环遍历,我想要提取的只是C。我该怎么做?

for aa in list1:
    if not re.findall('[^-$]'):
        print aa

会不会乱七八糟?

【问题讨论】:

  • 这怎么不正确?
  • “匹配”是什么意思? "-" in "-" 肯定评估为 True
  • @theEconomist:不要使用list 作为变量名:它会影响内置的。
  • @Anthony:这绝对是错误和荒谬的正则表达式。它可能看起来杂乱无章,但肯定
  • 他把事情搞砸了,因为他使用了 []

标签: python regex


【解决方案1】:

如果你只想匹配变量c:

if '-' == something:
   print 'hurray!'

回答更新:是的,那太混乱了。你在那里不需要正则表达式。简单的字符串方法更快:

>>> lst =["hello", "-hello", "-", "hell-o","    - "]
>>> for i, item in enumerate(lst):
    if item == '-':
        print(i, item)


2 -

【讨论】:

  • 同样使用约定 if "-" in list匹配 - 而不是 <spaces here>-
【解决方案2】:

作为正则表达式,它的 "^-$"

【讨论】:

  • 字符范围只能在字符类 ([…]) 中识别。 a-z 只匹配 a-z 而不是 az 范围内的任何字符。
【解决方案3】:

如果你想要做的是去掉破折号(即he-llo 给出hello),那么这更像是生成器表达式的工作。

''.join((char for char in 'he-llo' if char != '-'))

【讨论】:

  • 如果所有这些值都在一个列表中,他会希望返回包含他匹配的字符串的变量-,因此他会希望找到或返回c
【解决方案4】:
if "-" in c and len(c) ==1 : print "do something"

if c=="-"

【讨论】:

    猜你喜欢
    • 2017-08-24
    • 2010-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-26
    • 1970-01-01
    相关资源
    最近更新 更多