2010-02-02 83 views
2

假设我有这些字符串:的Python /正则表达式:排除一切除了一件事

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

如何只匹配-(字符串C)?我试过了if "-" in something,但显然这是不正确的。有人可以请指教吗?


比方说,我们把这些字符串放到一个列表,通过循环和所有我想提取物C。我将如何做到这一点?

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

请问这乱?

+0

这怎么不正确? – 2010-02-02 15:36:18

+0

“match”是什么意思? '“ - ”in“ - ”'肯定评估为* True *。 – Gumbo 2010-02-02 15:36:55

+0

不要看起来凌乱。 – 2010-02-02 15:51:11

回答

4

如果你想匹配唯一的变量c

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

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

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


2 - 
+0

也使用约定'如果“ - ”在列表中将*只匹配'-'而不是'-' – 2010-02-02 15:58:47

1

为正则表达式的“^ - $”

+3

字符范围只能在字符类中识别('[... ]')。 'a-z'只匹配'a-z'而不匹配'a'-'z'范围内的任何字符。 – Gumbo 2010-02-02 15:45:45

+0

很好地发现那里 – gum411 2010-02-02 15:52:36

+1

所以你为什么不解决它? – SilentGhost 2010-02-02 16:22:00

0

如果你想要做的是剥离出破折号(即he-llohello),那么这是更发电机表达式的工作。

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

如果所有这些值都在列表中,他会希望返回包含匹配字符串的变量''',所以他会希望'c'被找到或返回。 – 2010-02-02 15:52:24

+1

“hello”.replace(“ - ”,“”) – recursive 2010-02-02 16:29:34

0
if "-" in c and len(c) ==1 : print "do something" 

OR

if c=="-"