Regex.Replace在html字符串中查找变量宽度和高度,并替换为设置值

Ben*_*Ben 1 c# regex asp.net

我正在尝试编写一个正则表达式,它将在字符串中查找width和height属性(它始终是一个html iframe)并替换它具有的值.

我所拥有的是一个字符串,其中###可以是任何值,并且不一定总是3位数.

string iFrame = <iframe width="###" height="###" src="http://www.youtube.com/embed/xxxxxx" frameborder="0" allowfullscreen></iframe>
Run Code Online (Sandbox Code Playgroud)

我想最终得到宽度和高度的设定值:

<iframe width="315" height="215" src="http://www.youtube.com/embed/xxxxxx" frameborder="0" allowfullscreen></iframe>
Run Code Online (Sandbox Code Playgroud)

我试过这个,但对正则表达式不好:

iFrame = Regex.Replace(iFrame, "width=\".*\"", "width=\"315\"");
iFrame = Regex.Replace(iFrame, "height=\".*\"", "height=\"215\"");
Run Code Online (Sandbox Code Playgroud)

结果导致:

<iframe width="315" allowfullscreen></iframe>
Run Code Online (Sandbox Code Playgroud)

这不是我想要的.有人能帮我吗?

Sha*_*hen 8

将您的模式替换为:

"宽度= \"([0-9] {1,4})\ ""

"高度= \"([0-9] {1,4})\ ""

基本上,你正在使用.它执行贪婪捕获.意思是它抓住尽可能多的角色.上面的模式查找[0-9]重复1到4次的任何数字字符{1,4}.这是你真正想要的.