python正则表达式忽略一些字符

2024-04-19 10:57:11 发布

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

在python3中,我需要从一个格式为555=AB:C$: EF 1234567890的序列中提取一个10位数的数字,我应该怎么做?=和10位数字符串之间的字符串可以是几乎任何字符,而这些字符的长度总是10。。。我试图使用re.compile(),但还不能设置适当的模式。欢迎提出任何建议!在

编辑#1:字符串总共有20个字符,最后10位数字,前10位可以是任何字符(空格、字母、$或其他符号和数字)。因此,我还不能确定一个好的模式。在

EDIT#2:问题是我无法真正确定字符串末尾是哪个字符(字符串是大文件的一部分)。这个字符串后面的字符在windows/linux/unix中似乎没有统一的显示。因此,我试图从一开始就找到它,而不是从最后找到它。谢谢!在


Tags: 字符串re编辑ab格式模式序列数字
2条回答

如果10位字符串总是在末尾,您应该能够使用

>>> "555=AB:C$: EF 1234567890"[-10:]
'1234567890'

编辑:

根据你的编辑,你不需要正则表达式。如果字符串的长度总是20个字符,那么可以在python中使用普通的字符串操作。所以[-10:]或者甚至{}

^{pr2}$

如果你想从一开始就处理你的字符串,就采用后者。在

如果你不能使用字符串的结尾,因为你不知道它的结尾在哪里,你可以使用它

>>> "AB:C$: EF 1234567890"[10:20]
'1234567890'

如果这10个数字是字符串中最后10个字符的总是的话,您可以按照另一个答案中的建议,s[-10:]。在

如果不能保证,只需使用regular expression搜索10位数字,忽略字符串的其余部分。这个模式是\d{10},即\d代表数字,{10}代表十次。在

>>> import re
>>> s = "555=AB:C$: EF 1234567890"
>>> re.search(r"\d{10}", s).group()
'1234567890'

根据你的陈述:

The string between = and 10-digit string can be pretty much any character,while the length of those characters is always 10

如果您需要在一个更大的文本体中找到这些数字,可以搜索=,后面跟着10个字符,后面跟着10个数字,即=.{10}\d{10}

^{pr2}$

输出是1234567890的后两组。在

相关问题 更多 >