python - 是否有单一的匹配和替换功能?

标签 python regex

我想知道是否有更简单的替代方法(例如单个函数调用)来匹配和替换以下示例:

>>> import re
>>> 
>>> line = 'file:///windows-d/academic%20discipline/study%20objects/areas/formal%20systems/math'
>>> 
>>> match = re.match(r'^file://(.*)$', line)
>>> if match and match.group(1):
...     substitution = re.sub(r'%20', r' ', match.group(1))
... 
>>> substitution
'/windows-d/academic discipline/study objects/areas/formal systems/math'

谢谢。

最佳答案

我要回避你的正则表达式问题并建议你为此使用其他东西:

>>> line = 'file:///windows-d/academic%20discipline/study%20objects/areas/formal%20systems/math' 
>>> import urllib
>>> urllib.unquote(line)
'file:///windows-d/academic discipline/study objects/areas/formal systems/math'

然后在必要时用切片或 str.replace 剥离 file://

%20(空格)不是这里唯一可能的转义字符,因此最好使用正确的工具来完成工作,而不是让你的正则表达式解决方案在有另一个字符需要 un-逃跑。

关于python - 是否有单一的匹配和替换功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24982793/

相关文章:

javascript - 不呈现 Python Bokeh 标题和工具栏

Python - 如何调节弱代理对象列表

python - Sqlalchemy远程数据库 session 刷新/刷新问题

python - 创建numpy数组问题(无法将输入数组从形状(2)广播到形状(1))

php - 正则表达式匹配任何 UTF 字符,不包括标点符号

regex - 如何匹配文本并根据Perl中的匹配将其替换为计算值?

python - 使用 Mechanize 浏览器python查找静态字段的动态文本值

r - 将大写单词转换为标题大小写

regex - 如何在符合 POSIX BRE/ERE 的情况下更改我的表达式以返回相同的结果?

java - 正则表达式匹配除特定模式之外的任何内容