Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正则表达式-更改值_C#_.net_Regex - Fatal编程技术网

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.