当 Python 中有多个文件路径时,正则表达式替换字符串中的文件路径

电饭煲

我无法找到一种方法来匹配字符串中的多个文件路径,同时保留字符串的其余部分。

编辑:忘记添加文件路径可能包含一个点,因此将“用户名”编辑为 user.name”

# filepath always starts with "file:///" and ends with file extension
text = """this is an example text extracted from file:///c:/users/user.name/download/temp/anecdote.pdf 
1 of 4 page and I also continue with more text from 
another path file:///c:/windows/system32/now with space in name/file (1232).html running out of text to write."""

我找到了许多有效的答案,但是当存在多个 filepath 时失败,并且还替换了中间的其他字符。

import re
fp_pattern = r"file:\/\/\/(\w|\W){1,255}\.[\w]{3,4}"
print(re.sub(fp_pattern, "*IGOTREPLACED*", text, flags=re.MULTILINE))

>>>"this is an example text extracted from *IGOTREPLACED* running out of text to write."

我也试过使用“在模式后找到空格后停止”,但我无法让一个工作:

fp_pattern = r"file:\/\/\/(\w|\W){1,255}\.[\w]{3,4} ([^\s]+)"
>>> 0 matches
维克多·斯特里比尤夫

请注意,这{1,255}是一个贪婪的量词,会匹配尽可能多的字符,您需要在?其后添加

但是,仅使用惰性{1,255}?量词并不能解决问题。您需要定义比赛应该在哪里结束。当扩展名后紧跟空格或字符串结尾时,您似乎只想匹配这些 URL。

因此,使用

fp_pattern = r"file:///.{1,255}?\.\w{3,4}(?!\S)"

查看正则表达式演示

(?!\S)如果排除模式将失败的任何比赛,立刻到当前位置的右边,有一个非空白字符。.{1,255}?将匹配任何 1 到 255 个字符,尽可能少。

在 Python 中用作

re.sub(fp_pattern, "*IGOTREPLACED*", text, flags=re.S)

re.MULTILINEre.M)标志仅重定义^$锚行为使其匹配开始/结束线,而不是整个字符串。re.S标志允许.匹配任何字符,包括换行符。

请永远不要使用(\w|\W){1,255}?,.{1,255}?re.S标志一起使用来匹配任何字符,否则性能会下降。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

python文件路径在pycharm正则表达式混淆中失败

Python,用于在字符串中获取文件名的正则表达式

正则表达式:替换字符串中的逗号,Python

文件中的Python正则表达式字符串匹配

如何使用python正则表达式查找文件中的所有字符字符串

python中带有正则表达式比较的字符串在python中失败

如何使用Python更改正则表达式中的替换字符串?

如何使用正则表达式替换python词典中的字符串

用正则表达式替换带有python中字符串列表的字符串

正则表达式替换python中String中的子字符串

如何通过Python在属性文件中使用带有正则表达式字符串的正则表达式模式进行搜索

如何在python中使用正则表达式替换字符串的多个单词?

Python正则表达式字符串值到文件末尾

Python正则表达式:同一字符串中有多个条件匹配

使用正则表达式替换python中的子字符串

Python-正则表达式查找字符串中的所有匹配项并替换

将字符串从Python正则表达式存储到文件列表中

正则表达式搜索并替换Python中的子字符串

Python正则表达式:如何在文件行尾匹配字符串?

通过python中的正则表达式替换特定字符串之后的数字

由于字符串中有零个或多个数字,为什么'[0-9] *'在我的Python正则表达式中不匹配'abc'?

在python中用正则表达式替换多个字符串,以获得给出截断字符串的文件

使用正则表达式 PYTHON 替换文件中的特定字符串

python字符串中的正则表达式

使用正则表达式在 python 中搜索和替换字符串模式

匹配文件名而不是python正则表达式中的子字符串

python中的字符串正则表达式

如何在python中使用正则表达式替换句子列表中的多个子字符串?

Python3 使用带有正则表达式的 Dict 替换字符串