正则表达式文本组但因空值而失败

问题描述 投票:0回答:1

我有一个(Python)正则表达式字符串,它使用以下内容提取名称后面的 ID 直到行尾,它还可以满足冒号之前/之后的空格或没有空格的情况:

ID\s?:\s?(.\*)\r\*\n

https://regex101.com/r/qvMOdC/1

ID: an id
Rule name: abc
Severity: Medium

我想满足没有 ID 的情况,但上面的方法仅在冒号后有空格时有效,即“ID:”工作正常,但当我执行“ID:”时,即冒号后没有空格只是一个新行给我“规则名称:abc”作为 ID。

如何修复?谢谢。

regex
1个回答
0
投票

此问题的发生是由于在匹配

\s?
后使用
:
。请记住,
\s
匹配任何空格,包括换行符。因此,当
:
之后没有空格时,它会匹配
\n
之后的
:

您可以使用此正则表达式来解决此问题:

^ID[ \t]*:[ \t]*(.*)\r?\n

更新了正则表达式演示

此处

[ \t]*
匹配零个或多个空格或制表符。

© www.soinside.com 2019 - 2024. All rights reserved.