正则表达式替换为捕获组中的字符替换
RegEx Replace with character substitution in captured group
我可以使用正则表达式获取我感兴趣的字符串,但如何将其替换为捕获中替换的字符?
我想从任何 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>def" onclick="myfn()" class='xyz'>
Dear {@CustomerName},
blah blah blah
</div></body>
</html>
我正在使用以下正则表达式模式和替换
模式:\s\w+\s*=\s*(['"])[^]+?
替换: -- don't know! what should I use? --
这是我的 vb.net
代码(以防万一,如果它有帮助的话)
Dim reAttr As New Regex("\s\w+\s*=\s*(['""])[^]+?", RegexOptions.Singleline)
result = reAttr.Replace(text, Replace("$&", ">", ""))
你可以使用
Dim reAttr As New Regex("\s\w+\s*=\s*(['""])(?:(?!).)*?", RegexOptions.Singleline)
Dim result = reAttr.Replace(text, New MatchEvaluator(Function(m As Match)
Return m.Value.Replace(">", "-")
End Function))
请注意 [^]
没有按照您的预期进行,它匹配除 SOH 字符 (\x01
) 之外的任何字符。 (?:(?!).)*?
做你想做的,它匹配任何字符,除了第 1 组中捕获的值,0 次或更多次,尽可能少。
MatchEvaluator
用作替换参数,您可以在其中使用 m.Value
访问整个匹配值。
我可以使用正则表达式获取我感兴趣的字符串,但如何将其替换为捕获中替换的字符?
我想从任何 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>def" onclick="myfn()" class='xyz'>
Dear {@CustomerName},
blah blah blah
</div></body>
</html>
我正在使用以下正则表达式模式和替换
模式:\s\w+\s*=\s*(['"])[^]+?
替换: -- don't know! what should I use? --
这是我的 vb.net
代码(以防万一,如果它有帮助的话)
Dim reAttr As New Regex("\s\w+\s*=\s*(['""])[^]+?", RegexOptions.Singleline)
result = reAttr.Replace(text, Replace("$&", ">", ""))
你可以使用
Dim reAttr As New Regex("\s\w+\s*=\s*(['""])(?:(?!).)*?", RegexOptions.Singleline)
Dim result = reAttr.Replace(text, New MatchEvaluator(Function(m As Match)
Return m.Value.Replace(">", "-")
End Function))
请注意 [^]
没有按照您的预期进行,它匹配除 SOH 字符 (\x01
) 之外的任何字符。 (?:(?!).)*?
MatchEvaluator
用作替换参数,您可以在其中使用 m.Value
访问整个匹配值。