正则表达式替换为捕获组中的字符替换

普拉迪普·库玛(Pradeep Kumar)

我可以使用正则表达式获取我感兴趣的字符串,但是如何用捕获中替换的字符替换它呢?

我想>从任何html属性中删除字符,或将其替换为>

示例原始字符串

<html> 
<head></head> 
<body> 
<div  sometag="abc>def" onclick="myfn()" class='xyz'>
Dear {@CustomerName},
blah blah blah
</div></body> 
</html>

所需结果

<html> 
<head></head> 
<body> 
<div  sometag="abc&gt;def" onclick="myfn()" class='xyz'>
Dear {@CustomerName},
blah blah blah
</div></body> 
</html>

我正在使用以下正则表达式模式和替换

模式\s\w+\s*=\s*(['"])[^\1]+?\1

更换-- don't know! what should I use? --

这是我的vb.net代码(以防万一)

Dim reAttr As New Regex("\s\w+\s*=\s*(['""])[^\1]+?\1", RegexOptions.Singleline)
result = reAttr.Replace(text, Replace("$&", ">", ""))
维克多·史翠比维

您可以使用

Dim reAttr As New Regex("\s\w+\s*=\s*(['""])(?:(?!\1).)*?\1", RegexOptions.Singleline)
Dim result = reAttr.Replace(text, New MatchEvaluator(Function(m As Match)
         Return m.Value.Replace(">", "-")
     End Function))

请注意,[^\1]它没有按照您的期望进行操作,它匹配任何字符,但匹配SOH字符(\x01)。(?:(?!\1).)*? 回火贪婪令牌做你想要的东西,它的任何字符,比第1组,0次或多次捕捉到的值等,尽可能少的时间尽可能一致。

MatchEvaluator被用作替换的参数,你可以访问整个匹配值m.Value

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Java正则表达式替换为捕获组

正则表达式替换为捕获组

C ++ 11正则表达式:捕获替换字符串中的组后的数字

仅替换捕获组-正则表达式

正则表达式替换忽略非捕获组

正则表达式替换为捕获

Perl或sed:将正则表达式替换为组捕获

使用正则表达式将Javascript替换为非捕获组

正则表达式被捕获组替换为数字?

Python正则表达式替换为lambda函数,覆盖非捕获组

用名称等于正则表达式捕获组的文件替换字符串

使用正则表达式替换重复的字符组

在VSCode / Sublime中替换中处理正则表达式捕获组

正则表达式捕获字符并替换为另一个

在RStudio的“查找和替换”功能中使用正则表达式将捕获的组替换为小写

JavaScript字符串替换为来自具有参数作为正则表达式捕获组的lodash函数的返回的替换

用Javascript中的大写替换正则表达式捕获组

是否可以在正则表达式的替换中重复捕获的组?

如何为F#中的不同捕获组指定正则表达式替换

Powershell正则表达式替换捕获组中的引号

在记事本++中替换正则表达式捕获组?

高级正则表达式-在替换中捕获整个复杂的语句组

正则表达式搜索并用CSS文件中的捕获组替换

特殊字符未替换为正则表达式

正则表达式 - 将数字替换为字符

javascript 正则表达式中的组替换

忽略正则表达式替换中的中间组

替换正则表达式匹配中的命名组

如何将正则表达式替换中捕获的模式转换为大写?