2024-04-27 22:24:17 发布
网友
给定字符串1.blah blah2.yada yada,我想提取1.blah blah和2.yada yada。我尝试了这个\d\..+,但是它匹配了整个字符串。\d\..+?匹配1.b和2.y。我只需要懒洋洋地配合这个模式。有什么想法吗?你知道吗
1.blah blah2.yada yada
1.blah blah
2.yada yada
\d\..+
\d\..+?
1.b
2.y
模式末尾的.+匹配除换行符以外的所有1+字符,直到字符串/行结束。^模式末尾的{}只匹配1个字符(但它是必需的),因为+?是一个只需要1个字符的惰性量词。你知道吗
.+
+?
你可以用
\d+\..*?(?=\d+\.|$)
参见regex demo。如果字符串中可能有换行符,请添加re.DOTALL修饰符。你知道吗
re.DOTALL
细节
\d+
\.
.*?
(?=\d+\.|$)
.
Python演示:
import re rx = r"\d+\..*?(?=\d+\.|$)" s = "1.blah blah2.yada yada3.yadddaaa" print(re.findall(rx, s)) # => ['1.blah blah', '2.yada yada', '3.yadddaaa']
参见Python demo。你知道吗
模式末尾的}只匹配1个字符(但它是必需的),因为
.+
匹配除换行符以外的所有1+字符,直到字符串/行结束。^模式末尾的{+?
是一个只需要1个字符的惰性量词。你知道吗你可以用
参见regex demo。如果字符串中可能有换行符,请添加
re.DOTALL
修饰符。你知道吗细节
\d+
-1+位\.
-一个点.*?
-除换行符以外的任何0+字符(如果使用re.DOTALL
,甚至包括换行符),尽可能少,直到(但不包括)第一次出现。。。你知道吗(?=\d+\.|$)
-(一个正的前瞻匹配两个选择中的任何一个:)1+个数字,然后是.
或字符串的结尾。你知道吗Python演示:
参见Python demo。你知道吗
相关问题 更多 >
编程相关推荐