[英]Python - Use regex to extract substrings between two markers
我有一个需要帮助的问题。 我有以下字符串,需要执行以下操作:
两个扩展结果样本:
STRING database file 2025.01 ABC_ONE ABC_TWO
STRING database file 2025.01 ABC_ONE:12.3456 ABC_TWO:12.3456 ABC_THREE:12.3456 ABC_FOUR:12.3456 ABC_THREE:12.3456 ABC_FOUR:12.3456 ABC_FIVE:12.3456 ABC_SIX:12.3456 ABC_SEVEN:12.3456 ABC_EIGHT:12.3456 ABC_NINE:12.3456 ABC_TEN:12.3456
我将使用 Python re.finditer 循环遍历从正则表达式获得的结果。 此外,将使用 re.MULTILINE 和 re.IGNORECASE。
链接到我在 regex101 上的内容: https://regex101.com/r/CwMaEZ/1
随意提出不同的模式,但请记住以下几点:
这是我到目前为止的正则表达式:
(STRING)\s([a-zA-Z0-9/+._-]+)\s([a-zA-Z0-9/+._-]+)\s([a-zA-Z0-9/+._-]+)\s([a-zA-Z0-9/+._-]+)?\s?\\?\n?(.*VALUE=\s*\"?)
以下是字符串:
STRING database file 2025.01 \
0123456789ABCD VALUE="ABC_ONE \
ABC_TWO " END=STRING
ST=
STRING database file 2025.01 \
0123456789ABCD VALUE=ABC_ONE \
ABC_TWO END=STRING
ST=
STRING database file 2025.01 ABCDEFGH123456 \
VALUE=ABC_ONE ABC_TWO END=STRING
STRING database file 2025.01 \
VALUE=ABC_ONE:12.3456 END=STRING \
AAAA=ABCDEFGH1234
STRING database file 2025.01 \
VALUE="ABC_ONE:12.3456 ABC_TWO:12.3456 \
ABC_THREE:12.3456 ABC_FOUR:12.3456 " \
END=STRING \
STRING database file 2025.01 \
0123456789ABCD VALUE="ABC_ONE ABC_TWO " \
END=STRING
STRING database file 2025.01 VALUE="ABC_ONE \
ABC_TWO ABC_THREE END=STRING
STRING database file 2025.01 \
VALUE="ABC_ONE ABC_TWO ABC_THREE " END=STRING
STRING database file 2025.01 VALUE=
"ABC_ONE ABC_TWO ABC_THREE " END=STRING \
STRING database file 2025.01 VALUE="ABC_ONE \
ABC_TWO ABC_THREE " END=STRING
STRING database file 2025.01 VALUE="ABC_ONE ABC_TWO \
ABC_THREE " END=STRING
STRING database file 2025.01 VALUE="ABC_ONE ABC_TWO ABC_THREE " \
STRING database file 2025.01 \
VALUE="ABC_ONE:12.3456 ABC_TWO:12.3456 \
ABC_THREE:12.3456 ABC_FOUR:12.3456 \
ABC_THREE:12.3456 ABC_FOUR:12.3456 \
ABC_FIVE:12.3456 ABC_SIX:12.3456 \
ABC_SEVEN:12.3456 ABC_EIGHT:12.3456 \
ABC_NINE:12.3456 ABC_TEN:12.3456 \
ABC_ELEVEN:12.3456 ABC_TWELVE:12.3456 \
END=STRING
提问者通常被期望为解决问题付出一些努力。 以下是一些帮助您入门的代码:
s = s.replace('\\\n', '')
re.findall(r'VALUE="(.*?)\s*(?: " END=STRING|END=STRING)', s, re.M)
首先,您并没有真正整齐地提出问题。
但建议 1. 只是使用\S+
而不是[a-zA-Z0-9/+._-]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.