python中的re.match(正则表达式):匹配问题

时间:2015-02-07 05:00:47

标签: python regex

我正在尝试匹配一些模式(在更大的程序中)。所以我现在的代码是:

line = 'Name toyota;'
mo = re.match(r'(\w+)\s+([\w\s]+);', line)
print mo.group()

这很好地打印:Name toyota;

但如果line可以是什么呢?例子: line = name SPU123-6CU;line = name SPU123-389-2147656-1;line = name SPU123-389-1213609-0_fuse;line = name SPU123-1/0CN15;等等,如何mo通用,无论line中的字符串模式如何,如何我可以使用单个re.match语句并输出我的输出吗?

2 个答案:

答案 0 :(得分:1)

在名称后提取字符串。

mo = re.match(r'^(\w+)\s+(\S+);', line)

OR

mo = re.match(r'^(\w+)\s+([^;]*);', line)

从组索引2中获取所需的字符串。[^;]*否定字符类,该字符类匹配任何字符,但不匹配;零次或多次。 \S+匹配任意数量的非空格字符。

>>> re.match(r'^(\w+)\s+([^;]*);',"name SPU123-389-1213609-0_fuse;").group(2)
'SPU123-389-1213609-0_fuse'
>>> re.match(r'^(\w+)\s+([^;]*);',"name SPU123-1/0CN15;").group(2)
'SPU123-1/0CN15'
>>> re.match(r'^name\s+([^;]*);',"name SPU123-1/0CN15;").group(1)
'SPU123-1/0CN15'

答案 1 :(得分:0)

import re
line ="SPU123-6CU  fgfg"
mo = re.match(r'(?s).*', line)
print mo.group()

正如一些人所指出的那样:

line ="SPU123-6CU  fgfg"
print line

看起来像你真正需要的