python - 带有可选中间短语的多行字符串匹配器
问题描述
我想抓取分布在两行之间的文本。
例如 :
PO Number Dept.number
4000813852 7
我想获得 PO 编号 4000813852 它就像一个基于表格的数据,但在整个文档的上下文中似乎是普通文本。
我re.MULTILINE
用过 r'PO Number.*\n[0-9]+'
它在这种情况下有效,但它不是最好的解决方案,因为可能PO 编号位于中间
Invoice Number PO Number Dept.number
123456666 4000813852 7
解决方案
re.DOTALL
您可以通过启用两个捕获组和选项来执行此操作。该表达式假定您感兴趣的号码是文本中唯一一个有 10 位数字的号码。
表达式为:
(PO\sNumber).*(\d{10})
Python 片段:
import re
first_string = """PO Number Dept.number
4000813852 7"""
second_string = """Invoice Number PO Number Dept.number
123456666 4000813853 7"""
PO_first = re.search(r'(PO\sNumber).*(\d{10})',first_string,re.DOTALL)
print(PO_first.group(1)+" "+PO_first.group(2))
PO_second = re.search(r'(PO\sNumber).*(\d{10})',second_string,re.DOTALL)
print(PO_second.group(1)+" "+PO_second.group(2))
输出:
PO Number 4000813852
PO Number 4000813853
推荐阅读
- oracle - ORACLE:如何使用输入和输出参数调用存储过程
- ios - 将 swift iOS 项目导入另一个项目
- java - LWJGL 找不到 org/lwjgl/openal/OpenALException
- javascript - 网站加载问题:Angular 6 项目加载时间过长
- vba - 使用 VBA 中的 DAO 数据库对象无 DSN 连接到 Oracle 数据库
- php - 句子前面的图像 - DIV
- qt - 未填充 ColumnLayout 中的完整列高
- javascript - Selenium:拖放到 SVG 元素中
- validation - Struts 2 xml 不工作。验证没有发生
- sql-server - “输入字符串的格式不正确”可见性表达式错误