我需要一种方法来删除标记格式链接中的空格作为
[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)