Regex删除降价链接内的空格



我需要一种方法来删除标记格式链接中的空格作为

[uber](https://eng.uber.com/how-uber-deals-with-large-ios-app- size/)

正则表达式应该与空格匹配,并允许我删除它。尝试使用

/[((?:[[^]]*]|[^[]]|](?=[^[]*]))*)](s*<?((?:[^s\]|\.)*?)>?(s)+(?:s+['"]([sS]*?)['"])?s*)/gi

但不起作用。

游乐场:https://regexr.com/5neku

您可以使用:

([[^][]+])(([^()]+))

它查找[...](...)格式的内容
这与Python中的replacer函数相结合可能类似于:

import re
text = """
lorem ipsum dolor sit 
[uber](https://eng.uber.com/     how-uber      -deals-with-large-ios-app- size/)
lorem dolor
"""
# here comes the fun
def replacer(match):
replaced = re.sub(r's+', '', match.group(2))
return "{}({})".format(match.group(1), replaced)

rx = re.compile(r'([[^][]+])(([^()]+))')
text = rx.sub(replacer, text)
print(text)

有关regex101.com上的表达式和ideone.com中的脚本本身,请参阅演示。


如果你想更深入地了解正则表达式的美丽世界,不仅要完成你的工作,你可以使用以下只有更新的regex模块支持的表达式:

(?:G(?!A)|[[^][]+]()[^s()]+Ks+

这会查找类似[...](的内容,然后在每个空格或)处停止,从而有效地限制了括号内的搜索。请参阅regex101.com上的演示。

只捕获链接更容易,拆分为[...](..),然后替换空间

var links = `[uber](https://eng.uber.com/how-uber-deals-with-large-ios-app- size/)
[other link](https://eng.uber.com/    other-link)`
var m, regex = /([.*?])((.*?))/g;
while ((m = regex.exec(links)) !== null) {
var UrlNoSpace = m[2].replace(/s+/g, '')
links = links.replace(m[1] + m[2], m[1] + UrlNoSpace)
}
console.log(links)

最新更新