繁体   English   中英

Python 正则表达式未正确捕获组

[英]Python regex not capturing groups properly

我有以下正则表达式(?:RE:\w+|Reference:)\s*((Mr|Mrs|Ms|Miss)?\s+([\w-]+)\s(\w+))

输入文本示例:

  1. RE:11567 无名小姐 12345678
  2. 参考:张小姐 12345678
  3. RE:J123 无名小姐 12345678
  4. RE:J123 Miss Jane Doe 12345678 参考:测试公司

示例代码:

import re

pattern = re.compile('(?:RE:\w+|Reference:)\s*((Mr|Mrs|Ms|Miss)?\s+([\w-]+)\s(\w+))')
result = pattern.findall('RE:11693 Miss Jane Doe 12345678')

对于所有 4 个,我期望输出('Miss Jane Doe', 'Miss', 'Jane', 'Doe') 但是在第 4 个文本示例中,我得到[('Miss Jane Doe', 'Miss', 'Jane', 'Doe'), (' Test Company', '', 'Test', 'Company')]

我怎样才能得到正确的输出

只需将^添加到正则表达式的开头即可仅在开头匹配。 这使得它成为^(?:RE:\w+|Reference:)\s*((Mr|Mrs|Ms|Miss)?\s+([\w-]+)\s(\w+))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM