【问题标题】:Python parse module searchPython解析模块搜索
【发布时间】:2018-10-17 20:08:04
【问题描述】:

使用 python 解析模块。 我在一个字符串中搜索。 搜索“AB 编号”,然后搜索多个空格,然后搜索格式为 1-123456789 的数字。

所以“AB 编号 1-727288292920”

如果我使用它,它会找到它,但它会分成多个匹配项:-

search('AB Number{:s}{:d}{:D}{:d}',plain_text_body)

如果我使用它,它只匹配第一个数字,我无法弄清楚它为什么不匹配

search('AB Number{:s}{\d+\D\d+}',plain_text_body)

另外,我认为可以在被捕获的模式之外使用正则表达式,但我也无法做到这一点——例如,捕获多个空格应该是:-

search('AB Number\s+{\d+\D\d+}',plain_text_body)

但它不起作用。 有什么想法吗?

【问题讨论】:

  • import re,然后是re.findall(r'\bAB Number\s*\d-\d{12}(?!\d)', s)?
  • 所以你不推荐parse模块?
  • 如果您需要提取符合您要求的文本,您可以依赖re

标签: python regex parsing


【解决方案1】:

试试看。

import re

pattern = r'^(AB Number).+(\d\-\d{1,})$'
text = 'AB Number sdf sfd  1-727288292920'

for m in re.match(pattern, text).groups(): 
    print(repr(m))

输出

... 
'AB Number'
'1-727288292920'

【讨论】:

    猜你喜欢
    • 2011-04-01
    • 1970-01-01
    • 2018-02-18
    • 2011-07-18
    • 1970-01-01
    • 2023-04-03
    • 2011-06-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多