我有3种不同类型的字符串,我正在尝试匹配模式: 图案:
在每种情况下,我都想要匹配'1234567'
我尝试的代码是:
m = re.search(r'_[0-9]+_|$',string)
m = re.search(r'_[0-9]+[_]|$',string)
似乎没有给我我想要的结果。
从http://docs.python.org/2/howto/regex.html我已经读过:
“轮换,或”或“运算符。如果A和B是正则表达式,A | B将匹配任何与A或B匹配的字符串。|具有非常低的优先级,以使其在您'合理地工作时'交替使用多字符串。乌鸦|伺服将匹配Crow或Servo,而不是Cro,'w'或'S',以及ervo。“
A和B必须是正则表达式。我猜这个$不是正则表达式。
答案 0 :(得分:3)
strings = [
"abcdedf_abc_abc_XS123456789_1234567",
"abcdedf_abc_abc_AB_1234567_2014/03/17",
"abcdef_abcdf_abc_xyz_12354AB12_1234567"
]
import re
pattern = re.compile(r"(?<=_)\d+(?=_|$)")
for item in strings:
print pattern.search(item).group()
<强>输出强>
1234567
1234567
1234567