可选匹配字符串末尾的正则表达式(可选$)
我想从一个字符串中提取信息,
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
你可以用 (;|$)
来匹配这个内容。如果你不想要捕获到的结果,可以用 (?:;|$)
。