使用pythonv3,我试图找到一个字符串,只有当它包含一到两个数字(并且不再是同一个数字中的数字)以及它后面的所有其他数字。比赛在句号或新行上中断。你知道吗
\d{1,2}[^.\n]+
几乎正确,只是它返回的数字大于两位数。你知道吗
例如:
"5+years {} experience. stop.
10 asdasdas . 255
1abc1
5555afasfasf++++s()(jn."
应返回:
5+years {} experience
10 asdasdas
1abc1
Tags:
根据您的描述和示例数据,您可以使用以下正则表达式来匹配所需的字符串并丢弃其他字符串
正则表达式解释:
^
-行的开始\d
-匹配一个数字[^\d.]*
-这与数字或点以外的任何字符零次或多次匹配。这基本上允许可选地匹配非数字非点字符。你知道吗\d?
-如果您想允许一个或两个数字,这是第二个数字,它是可选的,因此\d
后跟?
[^\d.\n]*
-它匹配除数字、点或换行符以外的任何字符(?=\.|$)
-这种积极的前瞻性确保匹配要么以点结束,要么以行结束另外,请注意,多行模式是启用的,因为
^
和$
需要匹配行的开始和结束线路.ad你知道吗Regex Demo 1
代码:
打印:
另外,如果匹配行不一定以数字开头,您可以使用这个正则表达式来捕获您想要的字符串,但是这里您需要从group1获取您的字符串,如果您希望捕获的字符串仅以数字开头,并且如果想要的字符串不一定以数字开头,那么您可以捕获整个匹配。你知道吗
正则表达式解释:
^
-行的开始[^\d\n]*
-允许在第一个数字之前有零个或多个非数字字符(
-启动第一个分组模式以捕获从第一个数字开始的字符串\d
-匹配一个数字[^\d.]*
-这与数字或点以外的任何字符零次或多次匹配。这基本上允许可选地匹配非数字非点字符。你知道吗\d?
-如果您想允许一个或两个数字,这是第二个数字,它是可选的,因此\d
后跟?
[^\d.\n]*
-它匹配除数字、点或换行符以外的任何字符(?=\.|$)
-这种积极的前瞻性确保匹配要么以点结束,要么以行结束多行模式是启用的,您可以通过将
(?m)
放在regex(也称为inline修饰符)的开头之前,或者通过将第三个参数传递给re.search
作为re.MULTILINE
来启用Regex Demo 2
代码:
打印:
相关问题 更多 >
编程相关推荐