【发布时间】:2020-11-19 02:56:32
【问题描述】:
我有以下 sn-p 我想用正则表达式(或其他方法)完全删除。
# ---------------------------------------------------------------------------------------------------------------------
# MODULE PARAMETERS
# These are the variables we have to pass in to use the module specified in the terragrunt configuration above
# ---------------------------------------------------------------------------------------------------------------------
是否有语法告诉匹配删除两个匹配之间的所有内容?
看起来应该很容易做到,但由于某种原因,我只能找到一个正则表达式,通过此代码提取 第一个和最后一个匹配项。我已经尝试了这个正则表达式的许多排列,但无法让它工作。
...
re.sub(r'# --*[\S\s]*---', '', lines[line])
...
这个regex tool 说我的正则表达式应该可以工作。
编辑:
我有兴趣匹配的文本一次被读取一行。
...
for the_file in files_to_update:
with open(the_file + "/the_file", "r") as in_file:
lines = in_file.readlines()
随后被迭代。上面的 sn-p 就是在这个循环中发生的。
for line in range(len(lines)):
【问题讨论】:
-
什么是
lines[line]?它是否包含您问题中显示的所有文本? -
我已经更新了问题中的语法,但仍然得到相同的结果
-
@AhmedAbdelhameed 它基本上是一次循环遍历一个文件。让我添加一些关于这部分的更多信息。
-
@jmreicha 这就是我的怀疑。如果它只包含一行,您如何期望找到跨越多行的匹配在一行中?试试
re.sub(r'# --*[\S\s]*?---$', '', TheWholeText)。 -
@AhmedAbdelhameed 嗯,是的,好点 :) 可能需要跟踪比赛并写一些东西来消除比赛之间的界限?