正则表达式在引号之间提取数据

2024-04-25 14:56:54 发布

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

正如标题所说,字符串是'="24digit number"',我想提取""之间的数字(例如:="000021484123647598423458"应该得到'000021484123647598423458')。你知道吗

有一些答案可以回答如何在"之间获取数据,但在我的例子中,我还需要确认="存在而不捕获它(还有其他"\d{24}"字符串,但它们是用于其他东西的)。你知道吗

我无法修改这些答案来得到我需要的。你知道吗

我最新的正则表达式是((?<=\")\d{24}(?=\")),字符串是="000021484123647598423458"。你知道吗

更新:我想我会选择模式r'^(?:\=\")(\d{24})(?:\")',因为我只想捕获数字字符。你知道吗

word = '="000021484123647598423458"' pattern = r'^(?:\=\")(\d{24})(?:\")' match = re.findall(pattern, word)[0]

谢谢大家的建议。你知道吗


Tags: 字符串答案re标题numbermatch模式数字
2条回答

你可以这样做:

=(['"])(\d{24})\1

a demo on regex101.com


Python中:
import re

string = '="000021484123647598423458"'

rx = re.compile(r'''=(['"])(\d{24})\1''')
print(rx.search(string).group(2))
# 000021484123647598423458

下列工作之一:

>>> st = '="000021484123647598423458"'
>>> import re 
>>> re.findall(r'".*\d+.*"',st)
['"000021484123647598423458"']

或者

>>> re.findall(r'".*\d{24}.*"',st)
['"000021484123647598423458"']

或者

>>> re.findall(r'"\d{24}"',st)
['"000021484123647598423458"']

相关问题 更多 >