python - 如何使用正则表达式将字符串分成几个部分

标签 python regex python-3.x

我有一个字符串 ' DIM D =9999\PE TS D(A(4))' 并想使用正则表达式将这个字符串分成几个部分。请注意,'DIM' '=' 是常量,= 之后始终是一个数字,但数字之后的内容可能会发生很大变化。但是 'DIM''=' 之间的空格可能因字符串而异。此差异也适用于以下子字符串。另外,我想让 'PE TS' 被识别为一个元素。 所以,我想这个字符串可以有几个组:'DIM','D', '=9999', '\', 'PE TS', 'D(A(4))'

我试过 re.match 但我找不到合适的模式表达式。

match = re.match('(DIM\s+\S)(\d*)(\S+)([\w\s]*)(\s*\w*)', line)

我希望看到:

'DIM', '= 9999', '\', 'PE TS','D(A(4))'

但是,我总是得到 None 返回。

最佳答案

也许,有点类似于,

(DIM\s+\S+)\s*(=\s*\d+)\s*(\S+)\s*(.+?)\s{2,}(.+)

可能工作正常,但不确定。

测试

import re

regex = r"(DIM\s+\S+)\s*(=\s*\d+)\s*(\S+)\s*(.+?)\s{2,}(.+)"
test_str = """
   DIM D =9999  \ PE TS                         D(A(4))
    DIM AZ =    9999  \   PE TS AC AB                         D(A(4))
"""

print(re.findall(regex, test_str))

输出

[('DIM D', '=9999', '\\', 'PE TS', 'D(A(4))'), ('DIM AZ', '=    9999', '\\', 'PE TS AC AB', 'D(A(4))')]

表达式在 regex101.com 的右上面板中进行了解释, 如果你想探索/简化/修改它,在this link ,如果愿意,您可以观察它如何与一些样本输入相匹配。

关于python - 如何使用正则表达式将字符串分成几个部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57422560/

相关文章:

Python 正则表达式可选捕获组,具有正向前瞻功能

Python discord.py 安装

python - 根据各种参数选择div

Python:过滤器和生成器

python - 使用 beautifulsoup 抓取 <h2> 标签

python - 如何防止 QDoubleSpinBox 更改值

python - 求解隐式函数

python - 在 PyMongo 中查找子字符串

regex - 从Perl中的字符串中删除CRLF(0D 0A)

java - 用于拆分电话号码的正则表达式