我的网址可能在这样的括号内:
[[!;;;;http://example.com/foo]some text]
如何匹配网址,但是当它们在括号中时不会匹配,some text
也可能是网址。我需要将所有网址替换为该格式。
到目前为止,我有匹配网址的正则表达式:
var url_re = /(\bhttps?:\/\/(?:(?:(?!&[^;]+;)|(?=&))[^\s"'<>\]\[)])+\b)/gi;
示例输入:
http://example.com/foo [[!;;;;http://example.com/foo]some text] http://example.com/foo
输出:
[[!;;;;http://example.com/foo]http://example.com/foo] [[!;;;;http://example.com/foo]some text] [[!;;;;http://example.com/foo]http://example.com/foo]
答案 0 :(得分:1)
您可以添加./build/tools/caffe time -model /path/to/deploy.prototxt -weights /path/to/caffemodel -gpu all
否定前瞻,以避免在结束(?![^[\]]*])
之前与之前的任何其他]
或[
匹配模式:
]
并替换为\b(https?:\/\/(?:(?:(?!&[^;]+;)|(?=&))[^\s"'<>\][)])+)\b(?![^[\]]*])
。请参阅regex demo
另一种选择是匹配并捕获所有内部[[!;;;;$1]$1]
,然后在[...[...]...]
内使用回调来正确处理每次捕获,但上面看起来更“干净”且更直接。