gpt4 book ai didi

python - 条件正则表达式替换

转载 作者:行者123 更新时间:2023-11-28 20:24:13 28 4
gpt4 key购买 nike

使用 Python,您可以在替换文本之前检查组是否为空?

例子:

[user] John Marshal   -->   [user]<br><strong>Jonh Marshal<strong>

John Marshal --> <strong>Jonh Marshal<strong>

正则表达式应使用此 is,但“条件”仅在找到第 1 组时才插入

title = re.sub(r'^\s*(\[.*?\])?\s*(.*)', r'\1<br><strong>\2</strong>', title)

最佳答案

第一组总能找到,因为您允许空匹配。

你想匹配至少一个字符,而不是0个或多个,所以使用.+?:

title = re.sub(r'^\s*(\[.+?\])?\s*(.*)', r'\1<br><strong>\2</strong>', title)

现在,如果第一组缺失,比赛将抛出异常。利用它:

try:
title = re.sub(r'^\s*(\[.+?\])?\s*(.*)', r'\1<br><strong>\2</strong>', title)
except re.error:
title = re.sub(r'^\s*(.*)', r'<strong>\1</strong>', title)

另一种方法是使用函数进行替换:

def title_sub(match):
if match.group(1):
return '{}<br><strong>{}</strong>'.format(*match.groups())
return '<strong>{}</strong>'.format(match.group(2))

title = re.sub(r'^\s*(\[.+?\])?\s*(.*)', title_sub, title)

演示:

>>> re.sub(r'^\s*(\[.+?\])?\s*(.*)', title_sub, '[user] John Marshal')
'[user]<br><strong>John Marshal</strong>'
>>> re.sub(r'^\s*(\[.+?\])?\s*(.*)', title_sub, 'John Marshal')
'<strong>John Marshal</strong>'

关于python - 条件正则表达式替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17476775/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com