2014-09-25 3 views
-1

Как я могу сопоставить любой символ, кроме горизонтального табулятора? Группе, которую я хотел бы захватить, являются символы, которым предшествует «:», а затем «\ t».Python regex соответствует всем символам, кроме табуляции

regex = re.compile(r'^p:([^\t]*)\t') 
line = 'p:452c942b93\tperson\tSimon Sturridge' 
if regex.match(line): 
    print 'MATCH' 

Спасибо.

EDIT: Я хотел бы, чтобы соответствовать строке этого формата «р:» + «случайные числа и букв» + «\ т»
и захватить случайные числа и буквы следующего «:» и предшествует «\ т ». Прошу прощения за отсутствие лаконичности.

+1

Можете ли вы обеспечить ввод образца и ожидаемый результат, а то, что вывод, который вы фактически получаете? –

+0

Связано: [регулярное выражение, сопоставляющее все, кроме заданного регулярного выражения] (http://stackoverflow.com/questions/1781554/regular-expression-matching-everything-except-a-given-regular-expression) [Соответствие чему-либо, кроме letter - regex] (http://stackoverflow.com/questions/15348457/matching-anything-but-a-letter-regex) – Celeo

+0

Код, который вы указываете *, * подходит для меня как для 2.7, так и для 3.4. – Veedrac

ответ

0

Из того, что вы описали, я бы сказал:

pattern = re.compile(r'^p:(\w*)\t') 
foo = re.match(pattern, line) 
if foo: 
    print 'MATCH' 

Тест:

>>> foo.groups() 
('452c942b93',) 
>>>foo.group(1) 
'452c942b93' 
+0

Спасибо, есть способ сопоставить именно все символы, кроме \ t? Правильно ли [^ \ t] для этой цели? – pseudomarvin

+0

Я считаю, что это то, что вам нужно, не так ли? –

Смежные вопросы