当前位置: 首页 > 编程语言 > C#

C#Regex.Replace()-GetValueShare

时间:2023-04-10 22:25:52 C#

C#Regex.Replace():GetValue我在解析BB代码图片标签:[IMG]http://imagesource.com[/IMG]I我正在使用以下Replace()函数:Regex.Replace(msg,@"[img]([^]]+)[/img]",@"",RegexOptions.IgnoreCase);我需要在解析时获取URL。我需要知道“$1”的价值。是否可以?Regex类以某种方式用我需要的值替换了“$1”字符串,因此必须有一种方法来获取它。听起来您正在寻找具有接受MatchEvaluator的重载的Replace方法。可以在此处找到该方法的MSDN页面。试试这个:stringinput="[img]http://imagesource.com[/img]";字符串模式=@"[img]([^]]+)[/img]";字符串结果=正则表达式。Replace(input,pattern,m=>{varurl=m.Groups[1].Value;//在这里用url做一些事情//返回替换值return@"";},RegexOptions.IgnoreCase);这使用多语句lambda来简化组的工作并在返回替换值之前执行更多逻辑。当然,您可以摆脱它:stringresult=Regex.Replace(input,pattern,m=>@"",RegexOptions.IgnoreCase);在上面的例子中,不需要return,只是返回原始字符串,没有额外的Evaluate。您可以粘贴一些三元运算符并添加该逻辑,但它看起来会很乱。多语句lambda更清晰。如果它太大或将在其他Regex.Replace作业中重复使用,您可以考虑使用您自己的方法将其分解,如上述MSDN链接中所示。顺便说一句,我还通过删除]的转义来稍微简化你的模式。才开口【需要逃走。要保留捕获的字符串,只需“捕获”返回值即可。strings=Regex.Replace(msg,@"[img]([^]]+)[/img]",@"",RegexOptions.IgnoreCase);如果您匹配而不是替换,捕获组在Captures属性中可用以进行正则表达式匹配,并且您将有权访问该组。以上就是C#学习教程:C#Regex.Replace():获取所有分享值的内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处: