使用preg_replace的正则表达式

时间:2012-03-24 21:00:42

标签: php asp.net regex regular-language

我想知道用它中的vid_id替换这个字符串的最佳正则表达式

$code = '&lt;object width=&quot;420&quot; height=&quot;345&quot;&gt;<br />
    &lt;param name=&quot;movie&quot; value=&quot;http://www.badoobook.com/clips/swf/player.swf&quot;&gt;&lt;/param&gt;<br />
    &lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;flashvars&quot; value=&quot;vid_id=100226&amp;MainURL=http%3A%2F%2Fwww.bado  obook.com%2Fclips&amp;em=1&quot;&gt;<br />
    &lt;embed src=&quot;http://www.badoobook.com/clips/swf/player.swf&quot; flashvars=&quot;vid_id=100226&amp;MainURL=http%3A%2F%2Fwww.  badoobook.com%2Fclips&amp;em=1&quot; type=&quot;application/x-shockwave-flash&quot; allowScriptAccess=&quot;always&quot; width=&quot;420&quot; height=&quot;345&quot; allowFullScreen=&quot;true&quot;&gt;&lt;/embed&gt;&lt;/object&gt;'
$regular = '';
$code = preg_replace($regular ,'$1' , $code);
echo $code;

此代码中的vid ID为

  

值= &quot; = VID_ID的 100226 &amp;

感谢您的帮助

2 个答案:

答案 0 :(得分:2)

使用这个正则表达式:

vid_id=(\d+)

答案 1 :(得分:1)

您可以使用这样的正则表达式:

(?<=vid_id=)\d+

这使用positive lookbehind来匹配文字字符集“vid_id =”

之前的任意数字位数

这里再次提到RegexBuddy评论:

@"
(?<=          # Assert that the regex below can be matched, with the match ending at this position (positive lookbehind)
   vid_id=       # Match the characters “vid_id=” literally
)
\d            # Match a single digit 0..9
   +             # Between one and unlimited times, as many times as possible, giving back as needed (greedy)
"

您已使用phpasp.net标记了您的问题,因此我不确定您要执行的是哪种实施方式。以下是:

Asp.Net(C#)

Regex.Replace(@"...uot;vid_id=100226&amp;...", @"(?<=vid_id=)\d+", "[Your value here]")

PHP

echo preg_replace("(?<=vid_id=)\d+", "[Your value here]", "...uot;vid_id=100226&amp;...");