Regex 如何捕获可选组并在不匹配时替换?
在这种情况下,用户可能输入带有或不带有Regex 如何捕获可选组并在不匹配时替换?,regex,replace,grouping,Regex,Replace,Grouping,在这种情况下,用户可能输入带有或不带有http://的URL。如果它在那里,我想拥有它,否则请添加http://我自己。我有以下正则表达式模式: 正则表达式:\[url\](?:https?\:\/\/)(.*?\[\/url\]替换: 这就是为什么 [url]http://blog.sanspace.in[/url] [url]https://blog.sanspace.in[/url] [url]blog.sanspace.in[/url] [url]blog.sanspace.in/scr
http://
的URL。如果它在那里,我想拥有它,否则请添加http://
我自己。我有以下正则表达式模式:
正则表达式:\[url\](?:https?\:\/\/)(.*?\[\/url\]
替换:
这就是为什么
[url]http://blog.sanspace.in[/url]
[url]https://blog.sanspace.in[/url]
[url]blog.sanspace.in[/url]
[url]blog.sanspace.in/scraperwiki[/url]
[url]www.sanspace.in[/url]
进入这个
<a href="http://blog.sanspace.in">http://blog.sanspace.in</a>
<a href="http://blog.sanspace.in">http://blog.sanspace.in</a>
<a href="http://blog.sanspace.in">http://blog.sanspace.in</a>
<a href="http://blog.sanspace.in/scraperwiki">http://blog.sanspace.in/scraperwiki</a>
<a href="http://www.sanspace.in">http://www.sanspace.in</a>
请注意最后3个URL。这里我必须添加http
,但前提是我知道没有用户添加http
。我不知道如何实现我的目标
我在这里测试这个问题 试试下面的正则表达式:
匹配:\[url\](?:http?\:\/\/)?(*?)\[\/url\]
替换:
由于您愿意在原始字符串中不存在的情况下插入
http://
,因此这里的想法是即使存在也无法捕获它。相反,只捕获可选的s
,指示将安全http转换为$1
此正则表达式使用哪种语言/工具?效果很好。好主意。为什么我不这样想??)
<a href="http://blog.sanspace.in">http://blog.sanspace.in</a>
<a href="https://blog.sanspace.in">https://blog.sanspace.in</a>
<a href="blog.sanspace.in">blog.sanspace.in</a>
<a href="blog.sanspace.in/scraperwiki">blog.sanspace.in/scraperwiki</a>
<a href="www.sanspace.in">www.sanspace.in</a>
<a href="http://blog.sanspace.in">http://blog.sanspace.in</a>
<a href="https://blog.sanspace.in">https://blog.sanspace.in</a>
<a href="blog.sanspace.in">blog.sanspace.in</a>
<a href="blog.sanspace.in/scraperwiki">blog.sanspace.in/scraperwiki</a>
<a href="www.sanspace.in">www.sanspace.in</a>