Php 用于匹配mm的正则表达式模式<;sup>;3<;sup>;

Php 用于匹配mm的正则表达式模式<;sup>;3<;sup>;,php,regex,Php,Regex,我正在尝试编写一个正则表达式来将mm3更改为mL: 但是我的正则表达式没有捕获$match变量中的内容,并且$replac值没有输出。我做错了什么?更改: if(preg_match('/\b(mm<sup>3</sup>)\b/',$match)) if(预匹配('/\b(mm3)\b/',$match)) 致: if(preg#u匹配('#\bmm3\b#',$match)) 同样,在preg\u replace调用中 由于正则表达式包含/,因此需要对其进行

我正在尝试编写一个正则表达式来将mm3更改为mL:


但是我的正则表达式没有捕获
$match
变量中的内容,并且
$replac
值没有输出。我做错了什么?

更改:

if(preg_match('/\b(mm<sup>3</sup>)\b/',$match))
if(预匹配('/\b(mm3)\b/',$match))
致:

if(preg#u匹配('#\bmm3\b#',$match))
同样,在
preg\u replace
调用中

由于正则表达式包含
/
,因此需要对其进行转义或在正则表达式周围使用不同的分隔符


也不需要括号,因为您不需要对组执行任何操作。

您需要使用
preg_quote
来消除/regexp中的括号,或者使用不同的分隔符(通常使用#)

此外,>后面的\b分隔符是不必要的,括号也是不必要的,因为您似乎没有进行捕获;你基本上是在做一个更昂贵的
str\u替换

最后,你可以一蹴而就。如果没有对手,什么也不会发生

<?php
    $match = 'mm<sup>3</sup>';

    $replacement='ML';
    $replac = preg_replace('#\\bmm<sup>3</sup>#',
                       $replacement,
                       $match);
    echo $replac;
?>

为了捕捉mm3和类似内容,除了mm3(在某些情况下,它们可能看起来很相似,一些编辑器可能会使用或自动将其中一种形式“更正”为另一种形式)。

为什么不
stru replace()
在此上下文中?@Shankar Damodaran我只想使用regex。我做了更改,但它没有捕获mm3。
if(preg_match('#\bmm<sup>3</sup>\b#',$match))
<?php
    $match = 'mm<sup>3</sup>';

    $replacement='ML';
    $replac = preg_replace('#\\bmm<sup>3</sup>#',
                       $replacement,
                       $match);
    echo $replac;
?>
$match = 'mm\\s*<sup>\\s*3\\s*</sup>';