re模块 | 关于分组

2018-01-19  本文已影响0人  KeDaiBiaO1

正则表达式:

r'''(
    (\d{3}|\(\d{3}\))?    #area code
    (\s|-|\.)?            #seperator
    (\d{3})               #first three digits
    (\s|-|\.)             #seperator
    (\d{4})               #last four digits
    (\s*(ext|x|ext.)\s*(\d{2,5}))?    #extension
    )''', re.VERBOSE

输入:
415-863-9900 ext 23123
输出:

总结分组规则:

  1. 最外层() 匹配group(0) -----0
  2. 其他的开始正常匹配 ------ 1-5
  3. 然后到(\s*(ext|x|ext.)\s*(\d{2,5}))?
    (\s*(ext|x|ext.)\s*(\d{2,5}))?的全部匹配 ------6
    开始匹配里面的值 --------7-8
    7对应(ext|x|ext.) 8对应(\d{2,5})
    这个是匹配 空字符 零次或多次 + ext + 空字符 零次或多次 +数字2-5个
上一篇下一篇

猜你喜欢

热点阅读