可选匹配字符串末尾的正则表达式(可选$)

15 投票
2 回答
14993 浏览
提问于 2025-04-16 11:22

我想从一个字符串中提取信息,

ID=(?P<group>.+?);

这里的'ID='是固定的,而'group'可以是任何内容。这个匹配的位置在字符串中会有所不同。

在大多数情况下,这样做是没问题的,不过,有时候匹配会出现在字符串的末尾,而分号却缺失。在这种情况下,我该如何选择性地匹配字符串的结尾呢?我试过以下的方法:

ID=(?P<group>.+?)[;$]

但是这似乎没有效果,我想可能是因为$不是一个字符(它是一个锚点?)。

这是在Python中使用re模块进行的,而且我已经考虑了所有正常的行为,比如使用原始字符串(我想是这样!)。

2 个回答

1

如果没有开启 re.MUTILINE 这个选项,$ 符号表示字符串的结束。

ID=(?P<group>)[^;]+

如果开启了 re.MUTILINE 这个选项,$ 符号表示行的结束。

ID=(?P<group>)[^;\r\n]+

顺便问一下,你捕获的内容是什么呢:就是在 (?P<group>) 和 ';' 之间的部分?

31

你可以用 (;|$) 来匹配这个内容。如果你不想要捕获到的结果,可以用 (?:;|$)

撰写回答