我有一个多行文字框,其中包含以下字符串网址:
gitlab-ci.yml
我想从上面的网址http://foodfacts.ambigouos.com
http://articles.ambigouos.com
http://www.dirtshirt.org
中替换/更新字符串http to https
,其中ambigouos.com
为使用Regex的域名。
预期输出:
https://foodfacts.ambigouos.com
https://articles.ambigouos.com
http://www.dirtshirt.org
以下代码已尝试但无效:
multilinebox.text = Regex.Replace(multilinebox.text, @"^http?://[a-zA-Z]*(\.ambigouos\.com)$", "$1", RegexOptions.IgnoreCase);
提前致谢。
答案 0 :(得分:2)
您可以利用字符串位于行的开头的事实(即您应该使用RegexOptions.Multiline
标志编译正则表达式),您不需要检查结束这里的字符串/行。此外,您需要围绕字符串的整个非固定部分设置分组构造。
如果您只需要在一行开头处理匹配,请使用
Regex.Replace(multilinebox.text, @"^http://((?:[^/]*\.)?ambigouos\.com)", "https://$1",
RegexOptions.IgnoreCase | RegexOptions.Multiline);
如果您想在字符串中的任何地方处理匹配 ,请删除^
和| RegexOptions.Multiline
使用
Regex.Replace(multilinebox.text,
@"http://((?:[^/]*\.)?ambigouos\.com)",
"https://$1",
RegexOptions.IgnoreCase);
请参阅regex demo。
<强> Detasils 强>
^
- 开始一行(自使用RegexOptions.Multiline
起)http://
- 文字子字符串((?:[^/]*\.)?ambigouos\.com)
- 捕获第1组:
(?:[^/]*\.)?
- 除/
以外的任何0+字符的可选序列,然后是.
ambigouos\.com
- 一个文字子字符串。 您可以将\r\n
添加到否定字符类,以避免跨行溢出,即[^/]
=&gt; [^/\r\n]
。