2010-02-02 84 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=="-"