我正在尝试匹配一些模式(在更大的程序中)。所以我现在的代码是:
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
语句并输出我的输出吗?
答案 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
看起来像你真正需要的