【问题标题】:Regex Python adding characters after a certain word正则表达式 Python 在某个单词后添加字符
【发布时间】:2013-12-22 23:56:00
【问题描述】:

我有一个文本文件,每次出现“get”一词时,我都需要在其后插入一个@ 符号。

在 Python 中,如何使用正则表达式在特定单词后添加字符?现在我正在逐字解析这一行,但我对正则表达式的理解不足以编写代码。

【问题讨论】:

  • 您想在midget 之后添加@ 吗?
  • 我不想在侏儒之后添加。这会改变正则表达式吗?
  • 是的,有一点。 Martijn Pieters 给出了很好的答案。只需要在模式中“get”这个词前后添加词边界:\bget\b

标签: python regex


【解决方案1】:

使用re.sub() 提供替换,使用反向引用重复使用匹配的文本:

import re

text = re.sub(r'(get)', r'\1@', text)

(..) 括号标记一个组,\1 在指定替换时引用该组。所以getget@ 替换。

演示:

>>> import re
>>> text = 'Do you get it yet?'
>>> re.sub(r'(get)', r'\1@', text)
'Do you get@ it yet?'

该模式将匹配字符串中任意位置的get;如果您需要将其限制为整个单词,请添加 \b 锚点:

text = re.sub(r'(\bget\b)', r'\1@', text)

【讨论】:

  • ♦:如何在变量中传递get ?我的意思是如何设置 pass_variable_dynamically = "get" #may be some other string re.sub(r'pass_variable_dynamically', r'\1@', text)) 不起作用
  • @RasmiRanjanNayak:你的意思是你想参数化正则表达式?使用re.escape() 转义您的变量并使用普通的字符串插值技术:re.sub(r'(\b{}\b)'.format(variable), r'\1@', text) 将使用variable 来获取要替换的单词。
  • 使用 f-strings,它将是 re.sub(rf'(\b{variable}\b), r'\1@', text)
猜你喜欢
  • 2017-03-29
  • 2019-04-30
  • 2014-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-23
  • 2019-08-06
  • 1970-01-01
相关资源
最近更新 更多