我有一个(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。
如何修复?谢谢。
此问题的发生是由于在匹配
\s?
后使用 :
。请记住,\s
匹配任何空格,包括换行符。因此,当 :
之后没有空格时,它会匹配 \n
之后的 :
。
您可以使用此正则表达式来解决此问题:
^ID[ \t]*:[ \t]*(.*)\r?\n
此处
[ \t]*
匹配零个或多个空格或制表符。