Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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,我试图匹配字符串中的最后一个数字,例如 3.1一般定义34 我正在使用Python风格的正则表达式,我已经尝试过: (.*?)(\d) 因此,稍后我可以使用\1来引用“3.1一般定义”,使用\2来引用“34” 但是\2匹配“4”而不是“34”。那我该怎么办 谢谢和问候 您当前只匹配一个位数。试一试 (.*?)(\d+) 匹配至少一个数字。这应该是你所需要的,因为你已经让比赛的第一部分变得不情愿(不贪婪) 根据您执行匹配的方式,您可能需要在末尾添加一个“字符串末尾”锚($),以确保它与字符串开

我试图匹配字符串中的最后一个数字,例如

3.1一般定义34

我正在使用Python风格的正则表达式,我已经尝试过:

(.*?)(\d)
因此,稍后我可以使用\1来引用“3.1一般定义”,使用\2来引用“34”

但是\2匹配“4”而不是“34”。那我该怎么办


谢谢和问候

您当前只匹配一个位数。试一试

(.*?)(\d+)
匹配至少一个数字。这应该是你所需要的,因为你已经让比赛的第一部分变得不情愿(不贪婪)


根据您执行匹配的方式,您可能需要在末尾添加一个“字符串末尾”锚($),以确保它与字符串开头的数字不匹配。

您最初的方法:

>>> re.match(r'(.*?)(\d)', '3.1 General definitions 34').groups()
('', '3')
Jon Skeet的回答(编辑:我忘了加入Jon关于锚定到字符串末尾的建议,示例现在已更正):

我认为是正确的:新建:如果字符串没有以数字结尾,我会这样做:

>>> re.match(r'(.*)(?<=\D)(\d+)', '3.1 General definitions 34 more text').groups()
('3.1 General definitions ', '34')
>>re.match(r'(.*)(?您可以尝试:

(.+?)(\d+$)
因为它会给你:

>>> r.groups()
(u'3.1 General definitions ', u'34')

你需要一开始就让它变得贪婪。

Yes,.*?表示不贪婪地(不情愿地)匹配任何字符零次或多次。@RobertB:Yes,刚刚找到Python手册中的那一部分。但发现了另一个潜在问题:)也许我误解了他的要求,但他说他想匹配字符串中的最后一个数字。他没有说他的字符串以数字结尾(尽管他的例子确实是这样)。如果我对问题的理解是正确的,那么你的答案是错误的。否则,锚定到字符串结尾是有效的。@Steven:这一点很好。我从现有的正则表达式尝试中推断出。如果我对问题的理解是正确的,我的答案将暂时保持不变。如果字符串始终以nu结尾,这一点是有效的成员。@Steven:OP说字符串确实总是以数字结尾。这对我来说似乎是最好的答案。@Alan:我最终投票支持Jon Skeet的答案,因为他的答案最先发布。他们都是很好的答案。Jon的答案更为冗长,但通过提供更多的解释来弥补。berni的答案更为简洁。平局打破者进入了第一站d、 您说过要匹配字符串中的最后一个数字。字符串是否总是以数字结尾?是否要匹配此字符串中的数字
88
“12个苹果88个橙子”
?@Steven:我的字符串总是以数字结尾。
>>> r.groups()
(u'3.1 General definitions ', u'34')