Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用于可选匹配字符串结尾的正则表达式(可选$)_Python_Regex - Fatal编程技术网

Python 用于可选匹配字符串结尾的正则表达式(可选$)

Python 用于可选匹配字符串结尾的正则表达式(可选$),python,regex,Python,Regex,我想提取 ID=(?p.+?) 从字符串来看,“ID=”是一个常量,组可以是任何内容。比赛的位置在比赛中会有所不同 但是,在大多数情况下这是可以的,偶尔匹配会出现在字符串的末尾,分号会丢失。在这种情况下,如何选择匹配字符串的结尾?我尝试了以下方法: ID=(?P<group>.+?)[;$] ID=(?P.+?)[;$] 但我想这似乎不起作用,因为$不是一个角色(它是一个锚?) 这是在Python中使用re模块完成的,所有正常行为(如使用原始字符串)都已考虑在内(我想!)。您可以

我想提取

ID=(?p.+?)

从字符串来看,“ID=”是一个常量,组可以是任何内容。比赛的位置在比赛中会有所不同

但是,在大多数情况下这是可以的,偶尔匹配会出现在字符串的末尾,分号会丢失。在这种情况下,如何选择匹配字符串的结尾?我尝试了以下方法:

ID=(?P<group>.+?)[;$]
ID=(?P.+?)[;$]
但我想这似乎不起作用,因为$不是一个角色(它是一个锚?)


这是在Python中使用re模块完成的,所有正常行为(如使用原始字符串)都已考虑在内(我想!)。

您可以使用
(;|$)
来匹配它。或者,如果不希望捕获,
(?:;|$)

如果未启用re.multiline选项($表示字符串结束)

ID=(?P)[^;]+
如果启用了re.MUTILINE选项($表示行尾)

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

顺便问一下,你捕获了什么:在(?p)和“;”之间是什么

多行代码的优点是,这段代码只有一行,所以我还没有真正研究过。你最后一行的问题把我弄糊涂了,直到我意识到我有了答案?在捕获组之外,现在已经修复,希望这更清晰一些。
ID=(?P<group>)[^;]+
ID=(?P<group>)[^;\r\n]+