用正则表达式截断尾部组

2024-09-25 00:33:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个字符串,它们都以一些数字结尾,紧接着是一些非数字字符,例如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

我想正则表达式从一开始就很匹配。你知道吗

有什么提示吗?你知道吗


Tags: 字符串importrematch结尾group数字字符
2条回答

添加?使第一个匹配成为非贪婪的,以便它尽可能少地匹配。还要添加$,以便匹配始终转到字符串的末尾:

a = re.match('(.*?)([^0-9]+[0-9]*)$', str0)

以下内容应该与您想要的内容匹配:(-|\+)?\d+(\.\d*)?/(-|\+)?\d+(\.\d*)?这将允许您提取您要查找的数字。你知道吗

此模式将只匹配结束部分(-ch1示例上测试):(?<=\d)[^\d\./][a-zA-Z0-9]*$

我不太清楚你所说的“切断”是什么意思,因为你的示例只是拉出组,而不是实际操作字符串来切断任何东西,但是这些模式中的任何一个都应该提取你要查找的部分。你知道吗

相关问题 更多 >