Python / Regex: исключить все, кроме одного - PullRequest
2 голосов
/ 02 февраля 2010

Предположим, у меня есть эти строки:

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

Это будет слишком грязно?

Ответы [ 4 ]

4 голосов
/ 02 февраля 2010

Если вы хотите сопоставить только переменную c:

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

Чтобы ответить на обновления: да, это было бы слишком грязно. Вам не нужно регулярное выражение там. Простые строковые методы быстрее:

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


2 -
1 голос
/ 02 февраля 2010

в качестве регулярного выражения его "^ - $"

0 голосов
/ 02 февраля 2010
if "-" in c and len(c) ==1 : print "do something"

ИЛИ

if c=="-"
0 голосов
/ 02 февраля 2010

Если то, что вы пытаетесь сделать, это убрать черту (т.е. he-llo дает hello), то это скорее работа для выражений генератора.

''.join((char for char in 'he-llo' if char != '-'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...