1

我有一个字符串

abcde1234_abcde

使用 python re,我想提取1234_abcde并且有效的字符串将包含至少 1 个数字,后跟_ (下划线)

当我使用.*(?P<required>\d+\_.*)它时,它给我4_abcde的结果不是1234_abcde

在这方面需要帮助。

4

3 回答 3

3

为什么不只是匹配:

\d+_.*

这将匹配一个或多个数字,\d+然后是下划线_,之后它只会捕获所有内容,直到字符串或行的末尾。

如果您从星号的贪婪版本切换到不情愿(懒惰)版本,您的原始表达式会起作用,*?如下所示:

 .*?(?P<required>\d+_.*)

正则表达式 101 演示

于 2013-11-07T15:00:53.230 回答
0

这是解决方案:

 re.match(r'.*?(?P<required>\d+\_.*)', 'abcde1234_abcde').group(1)

在您的原始表达式中,.*没有?after 它将尝试尽可能多地匹配,因此您获得唯一的最后一位数字。

于 2013-11-07T15:15:33.653 回答
0

试一试:

\D*(?P<required>\d+_.*)
于 2013-11-07T15:40:35.193 回答