python 如何使用re.sub()有条件地执行正则表达式替换以获得此输出?[duplicate]

rn0zuynd  于 2023-01-01  发布在  Python
关注(0)|答案(1)|浏览(150)
    • 此问题在此处已有答案**:

Regex whitespace word boundary(3个答案)
5小时前关闭.

import re, datetime

input_text_substring = "del año, desde el año, o en el año desde donde ocurrio al de donde los años"

input_text_substring = re.sub(r"(?:del|de[\s|]*los|de[\s|]*el|el|los)[\s|]*(?:años|anos|año|ano)", 
                            str( int(datetime.datetime.today().strftime('%Y') ) + 1), 
                            input_text_substring)

print(repr(input_text_substring))

(?:del|de[\s|]*los|de[\s|]*el|el|los)中应该放置什么正则表达式,以便给出正确的替换,因为正如您所看到的,它不应该总是以相同的方式应用
我得到的错误输出

'2023, des2023, o en 2023 desde donde ocurrio al de don2023'

我需要的输出

'2023, desde 2023, o en 2023 desde donde ocurrio al de donde 2023'
euoag5mw

euoag5mw1#

您可以使用正向后查找来捕获空格后面的单词。

import datetime
import re

input_text_substring = "del año, desde el año, o en el año desde donde ocurrio al de donde los años"

input_text_substring = re.sub(r"(?:(?<=\s)|^)(?:del|el|los)\s(?:año[s]?|ano[s]?)",
                              str(int(datetime.datetime.today().strftime('%Y')) + 1),
                              input_text_substring)

print(repr(input_text_substring))

>>> '2023, desde 2023, o en 2023 desde donde ocurrio al de donde 2023'

相关问题