带有“OR”和$ end行的python正则表达式

时间:2014-02-14 01:19:32

标签: python regex

我有3种不同类型的字符串,我正在尝试匹配模式: 图案:

  1. abcdedf_abc_abc_XS123456789_1234567
  2. abcdedf_abc_abc_AB_1234567_2014 / 3月17日
  3. abcdef_abcdf_abc_xyz_12354AB12_1234567
  4. 在每种情况下,我都想要匹配'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必须是正则表达式。我猜这个$不是正则表达式。

1 个答案:

答案 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

Regular expression visualization

Debuggex Demo