【发布时间】:2018-01-18 20:43:08
【问题描述】:
好的,我知道这可能不是在循环中使用正则表达式编辑字符串的最佳方法。只是为了感兴趣:我将如何构建一个循环,只要它匹配就执行一个正则表达式模式,在一个循环中运行并在它不再命中时停止?我在 python 中这样做。
match = re.search(r'pattern, repl, str)
while match (is True, == True?):
sub = re.sub(r'pattern, repl, str)
else:
Do something else
【问题讨论】:
-
re.sub通常会在它找到的所有非重叠匹配上执行替换(尽管您可以通过传递countarg 来限制它),因此将它放在像这样的循环中是相当不寻常的那,尽管我想如果替换的结果创建更多与模式匹配的子字符串是有意义的。但是,正如 nnnmmm 指出的那样,您没有在循环内更新match,因此它要么永远不会运行,要么将成为无限循环。 -
目标是从 html 的 p-tags 中删除行尾。所以我搜索从
到 \n 的任何内容,删除 \n 并重复正则表达式。当我一次又一次地重复相同的正则表达式行时,它适用于我的目的。但我认为也应该有一个循环解决方案。
-
@Pjoern 如果您想正确处理 html,请使用 html 解析器。
标签: python regex while-loop