C# 替换与正则表达式模式c匹配的字符串中的指定字符串#
我有一个多行文本框,其中包含以下字符串URL:C# 替换与正则表达式模式c匹配的字符串中的指定字符串#,c#,regex,replace,pattern-matching,regex-group,C#,Regex,Replace,Pattern Matching,Regex Group,我有一个多行文本框,其中包含以下字符串URL: http://foodfacts.ambigouos.com http://articles.ambigouos.com http://www.dirtshirt.org 我想用Regex替换/更新上述URL中的字符串http到https,该URL将ambigous.com作为域 预期输出: multilinebox.text = Regex.Replace(multilinebox.text, @"^http?://[a-zA-Z]*(\.am
http://foodfacts.ambigouos.com
http://articles.ambigouos.com
http://www.dirtshirt.org
我想用Regex替换/更新上述URL中的字符串http到https
,该URL将ambigous.com
作为域
预期输出:
multilinebox.text = Regex.Replace(multilinebox.text, @"^http?://[a-zA-Z]*(\.ambigouos\.com)$", "$1", RegexOptions.IgnoreCase);
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);
提前感谢。您可以利用字符串位于行的开头这一事实(即,您应该使用
RegexOptions.Multiline
标志编译正则表达式),您不需要在此处检查字符串/行的结尾。此外,还需要围绕字符串的整个非固定部分设置分组构造
如果只需要处理行开头的匹配项,请使用
Regex.Replace(multilinebox.text, @"^http://((?:[^/]*\.)?ambigouos\.com)", "https://$1",
RegexOptions.IgnoreCase | RegexOptions.Multiline);
如果要处理字符串中任何位置的匹配请删除^
和| RegexOptions。多行
使用
Regex.Replace(multilinebox.text,
@"http://((?:[^/]*\.)?ambigouos\.com)",
"https://$1",
RegexOptions.IgnoreCase);
看
Detasils
-行的开头(因为使用了^
)RegexOptions.Multiline
-文字子字符串http://
-捕获组1:((?:[^/]*\)?ambigous\.com)
-除(?:[^/]*\)?
之外的任何0+字符的可选序列,然后是/
-文字子字符串李>ambigous\.com
您可以向求反字符类添加
\r\n
以避免跨行溢出,即[^/]
=>[^/\r\n]
您可以利用字符串位于行的开头这一事实(即,您应该使用RegexOptions.Multiline
标志编译正则表达式),您不需要在此处检查字符串/行的结尾。此外,还需要围绕字符串的整个非固定部分设置分组构造
如果只需要处理行开头的匹配项,请使用
Regex.Replace(multilinebox.text, @"^http://((?:[^/]*\.)?ambigouos\.com)", "https://$1",
RegexOptions.IgnoreCase | RegexOptions.Multiline);
如果要处理字符串中任何位置的匹配请删除^
和| RegexOptions。多行
使用
Regex.Replace(multilinebox.text,
@"http://((?:[^/]*\.)?ambigouos\.com)",
"https://$1",
RegexOptions.IgnoreCase);
看
Detasils
-行的开头(因为使用了^
)RegexOptions.Multiline
-文字子字符串http://
-捕获组1:((?:[^/]*\)?ambigous\.com)
-除(?:[^/]*\)?
之外的任何0+字符的可选序列,然后是/
-文字子字符串李>ambigous\.com
您可以将
\r\n
添加到否定字符类以避免跨行溢出,即[^/]
=>[^/\r\n]
下面的代码已尝试但不起作用
它不起作用的具体程度如何?您可以定义不起作用
?您知道您的正则表达式与http://
或htt://
匹配,对吗?您可能不需要regexp,只需检查行是否包含(“ambigoos.com”)
,然后执行替换(“http://”,“https:/”)
@trailmax如果only OP不想确保仅更改HTTP链接,则为真。下面的代码已尝试但不起作用
具体不起作用的原因是什么?能否定义不起作用
?您知道您的正则表达式与HTTP://
或htt://
匹配,对吗?您可能不需要正则表达式,只需检查是否需要正则表达式ne包含(“ambigous.com”)
,然后执行。替换(“http://”、“https://”)
@trailmax,如果only OP不想确保只更改HTTP链接,则为true。http://foodfacts.ambigouos.com/
与上述正则表达式不匹配,因此不替换为https://foodfacts.ambigouos.com/
suggest!!@PPB.这里是@PPB您的意思是说您不需要在开始时匹配这些URL吗行,但在字符串中的任何位置?@PPB,但这意味着您希望在行的开头匹配http://
。无需删除^
行的开头锚。是否添加了RegexOptions。多行
选项?显示您在IDEONE的确切代码。让我们来看看。http://foodfacts.ambigouos.com/
不适用使用上述正则表达式,因此不替换为https://foodfacts.ambigouos.com/
suggest!!@PPB。这里是。@PPB您的意思是说您不需要在行首匹配这些URL,而是在字符串中的任何位置?@PPB但这意味着您要在行首匹配http://
。无需删除>^
line-anchor的开始。您是否添加了RegexOptions.Multiline
选项?显示您在IDEONE的确切代码。让我们看看。