Python正则表达式使用re.findall(r'()',string)选择性地选择数字

2024-06-26 18:06:57 发布

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

我只需要从以下内容中提取字符串末尾的文本部分和子编号:

'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor?::enim',
'9. Ut enim ad minima veniam, quis nostrum exercitationem.2',
'. . . . . 9.1 dolore magnam aliquam quaerat',
'. . . . . 9.1 ed quia consequuntur magni.1',
'. . . . . 9.2 Quis autem vel eum iure reprehenderit.2'

像这样:

'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor?::enim',
'Ut enim ad minima veniam, quis nostrum exercitationem.2',
'dolore magnam aliquam quaerat',
'ed quia consequuntur magni.1',
'Quis autem vel eum iure reprehenderit.2'

在python正则表达式中使用单个re.findall(r'()',item)是否可以做到这一点? 似乎我无法将字符串开头的数字与字符串结尾的数字“分开”

例如,我尝试了以下代码:

string ='. . . . . 9.2 Quis autem vel eum iure reprehenderit.2' 
string = re.findall(r'([a-öA-Ö0-9/:._]+)',string)
string = ' '.join( list(filter(lambda x: x != '.', string)))

这使得:

'9.2 Quis autem vel eum iure reprehenderit.2'

但这并不会删除前面的数字,这很复杂,还会分割原始文本,并在中间加上空格。我想剪切文本开始的字符串,但不想触及原始文本部分。例如,有时单词之间可能有两个空格,但这些空格应该保留原样


Tags: 字符串文本string数字空格ipsumloremdolor
3条回答

尝试使用更复杂的正则表达式,例如:

import re

expression = re.compile(r'(.*?[0-9].+? )*(.+)')

# this is a list of tuples, and you are always interested in the last match
results = expression.findall('<string>')[-1][-1]

可以转换与正则表达式匹配的子字符串(设置大小写无关标志)

(?<=^')[^a-z]+

清空字符串

Demo

正则表达式的内容是,“匹配一个或多个字符,而不是在行首单引号后面的字母”(?<=^')是一个正向查找

也许

import re

text = """
'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor?::enim',
'9. Ut enim ad minima veniam, quis nostrum exercitationem.2',
'. . . . . 9.1 dolore magnam aliquam quaerat',
'. . . . . 9.1 ed quia consequuntur magni.1',
'. . . . . 9.2 Quis autem vel eum iure reprehenderit.2'
"""

pattern = re.compile(r".*?(\d\.\d? )")

print(pattern.sub(r"'", text))

产出:

'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor?::enim',
'Ut enim ad minima veniam, quis nostrum exercitationem.2',
'dolore magnam aliquam quaerat',
'ed quia consequuntur magni.1',
'Quis autem vel eum iure reprehenderit.2'

相关问题 更多 >