gpt4 book ai didi

python - 在 python 中用 re.sub 替换单个单词

转载 作者:太空宇宙 更新时间:2023-11-04 05:20:49 24 4
gpt4 key购买 nike

剧透:是的,这是一项任务。已解决,但出于个人兴趣,我想了解以下内容。

因此目前使用语法标记进行作业,我们在其中输入文件,并使用正则表达式字典,相应地为它们(关键字)着色。

虽然有一些问题。

for i in iterations:
pass

在上面这行中,使用正则表达式r'(\t*for.*in.*?:.?)' 会起作用,但它会为整行着色。虽然这是允许的,但我真的希望它只标记 for/in

尝试使用 r'(\bfor\b|\bin\b)' 既不是善意的,也不是 r'(for)' 或 r'(\s为\s)'。

我将整个代码读入一个字符串并使用 re.sub() 将所有出现的地方替换为 colour + r'\1' + colour_end,其中颜色指定颜色序列。

最佳答案

您可以使用捕获和反向引用:

^(\t*)(for\b)(.*)\b(in)\b(.*?:)

替换为$1<color>$2</color>$3<color>$4</color>$5 .查看regex demo .

在这里,表达式被分成 5 个子部分,带有 (...)捕获组。在替换模式中,捕获的那些值使用具有 $ 的反向引用进行引用。 + n格式 n是模式内捕获组的 ID。

如果您没有机会运行 1 个带有多个捕获组的正则表达式,请最后运行两个:

  • ^(\t*)for\b(?=.*\bin\b.*?:) --> $1<color>for</color> (参见 this demo)
  • ^(\t*for\b.*)\bin\b(?=.*?:) --> $1<color>in</color> (参见 another demo)。

单捕获组围绕词前部分,词后部分不匹配但用正向前瞻检查。

关于python - 在 python 中用 re.sub 替换单个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40422892/

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