C# 正则表达式-更改值
我有以下案文:C# 正则表达式-更改值,c#,.net,regex,C#,.net,Regex,我有以下案文: <script type="text/javascript" id="wordpress_grazit_script"> var dbnurls = []; var dbnanchors = []; dbnurls.push('url'); dbnanchors.push('anchor'); var script = doc
<script type="text/javascript" id="wordpress_grazit_script">
var dbnurls = [];
var dbnanchors = [];
dbnurls.push('url');
dbnanchors.push('anchor');
var script = document.createElement("script");
script.setAttribute("src", dbn_protocol+"path to js");
script.setAttribute("type", "text/javascript");
script.setAttribute("id", "grazit_script");
document.getElementById("my-id").parentNode.appendChild(script);
</script>
我需要说明我需要c#net中的这个正则表达式
感谢您如果在javascript中您可以这样做:
var result = yourScriptString.replace(
/(script\.setAttribute\("src",)(.*)(\))/,
" $1'" + someUrl + "'$3");
有关详细信息,请参见。您只能从
dbn_协议
进行匹配(并且在定义正则表达式时使用@
符号,这样您就不必执行大量的双转义):
使用引号将防止正则表达式匹配的js路径超过
路径
如果您只想替换dbn_协议+“js路径”,有几种方法可以实现这一点,首先您可以使用新的方法直接替换dbn_协议+“js路径”
string.Replace(string searchterm,string replacementterm);
但是,正如您所提到的,您希望在regex中使用这些内容,因此请尝试下面的方法,它返回一个新字符串(这是一个新的脚本部分,替换了dbn_protocol+“path to js”)
Regex r = new Regex(@"dbn_protocol\+""[^""]+""");
string newscript=r.Replace("your script's text","the replacement string");
//newscript is the script text that you need.
还有一件事我想指出的是,如果您需要绝对一次性地更改它,那么为什么您选择在代码中执行它,而您可以轻松地手动执行它
希望它能起作用。谢谢你的回答。问题是你说了什么。雷格克斯带着贪婪,一路走到最后一场比赛。我把“?”放进去,一切都成功了
谢谢您使用什么语言处理脚本文本?它也是javascript还是其他东西?看看非贪婪匹配()。目前,您的
*
将尽可能地获取,您希望它获取尽可能少的数量,因此您将需要*?
。还有,为什么不将模式“dbn\U协议+”路径与js匹配“
并替换它,而不是执行更复杂的操作?谢谢您的@建议,但我不确定dbn_协议是否始终存在,可以是任何值、字符串或变量。@DanielTranca噢,我认为您的字符串具有“dbn_协议”统计信息(如非变量)。
string.Replace(string searchterm,string replacementterm);
Regex r = new Regex(@"dbn_protocol\+""[^""]+""");
string newscript=r.Replace("your script's text","the replacement string");
//newscript is the script text that you need.