我有两个字符串,它们都以一些数字结尾,紧接着是一些非数字字符,例如10.1002/0470868279-ch1
。我想完全切断这个组;对于这个例子-ch1
。我试过了
import re
str0 = '10.1002/0470868279-ch1'
a = re.match('(.*)([^0-9]+[0-9]*)', str0)
print(a.group(0))
print(a.group(1))
print(a.group(2))
str1 = '10.1002/0470868279.1' # likewise
但事实并非如此:
10.1002/0470868279.ch1
10.1002/0470868279.c
h1
我想正则表达式从一开始就很匹配。你知道吗
有什么提示吗?你知道吗
添加
?
使第一个匹配成为非贪婪的,以便它尽可能少地匹配。还要添加$
,以便匹配始终转到字符串的末尾:以下内容应该与您想要的内容匹配:
(-|\+)?\d+(\.\d*)?/(-|\+)?\d+(\.\d*)?
这将允许您提取您要查找的数字。你知道吗此模式将只匹配结束部分(在
-ch1
示例上测试):(?<=\d)[^\d\./][a-zA-Z0-9]*$
我不太清楚你所说的“切断”是什么意思,因为你的示例只是拉出组,而不是实际操作字符串来切断任何东西,但是这些模式中的任何一个都应该提取你要查找的部分。你知道吗
相关问题 更多 >
编程相关推荐