我有一个字符串 ' 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/