2014-09-25 314 views
-1

如何匹配水平制表符以外的任何字符?我想要捕获的组是以':'开头的字符,然后是'\ t'。Python正则表达式匹配除标签外的所有字符

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

谢谢。

编辑:我想匹配这种格式的字符串'p:'+'随机数字和字母'+'\ t'
并捕获':'后面的随机数字和字母,\'t ”。我对缺乏简洁表示歉意。

+1

你能提供样品的输入和预期的输出,而你实际上得到什么输出? – 2014-09-25 21:29:04

+0

相关:[正则表达式匹配除了给定的正则表达式的一切](http://stackoverflow.com/questions/1781554/regular-expression-matching-everything-except-a-given-regular-expression)[匹配除了一个字母 - 正则表达式](http://stackoverflow.com/questions/15348457/matching-anything-but-a-letter-regex) – Celeo 2014-09-25 21:32:33

+0

你提供的代码*在2.7和3.4上都是匹配的。 – Veedrac 2014-09-25 21:42:51

回答

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 2014-09-25 21:43:30

+0

我相信这是你需要的,对吧? – 2014-09-25 22:03:25