代码之家  ›  专栏  ›  技术社区  ›  alien

PHP preg\u replace add括号

  •  0
  • alien  · 技术社区  · 8 年前

    xxx - 12, ABC DEF GHI
    

    我想这样替换这个字符串

    xxx - 12, (ABC DEF GHI)
    

    此外,我添加到括号中的字符串是动态的。

    STRING - NUMBER, STRING
    

    NUMBER, 找到字符串并在字符串的末尾结束。 所以替换模式是

    STRING - NUMBER, (STRING)
    
    2 回复  |  直到 8 年前
        1
  •  1
  •   B. Desai    8 年前

    按照以下方式制作图案和替换品:

    $str = "xxx - 12, ABC DEF GHI";
    $pattern = "/([A-Z]+ - [0-9]+,) ([A-Z\s]+)/i";
    $replace = "$1 ($2)";
    echo preg_replace($pattern,$replace,$str);
    

    Demo

        2
  •  1
  •   Casimir et Hippolyte    8 年前

    您可以尝试:

    $str = preg_replace('~\d,\h*\K.*\S~', '($0)', $str);
    

    图案细节:

    ~         # pattern delimiter
    \d,       # a digit followed by a comma
    \h*       # zero or more horizontal whitespaces
    \K        # start the match result at this position
    .* \S     # zero or more characters until the last non-whitespace character
    ~
    

    在替换字符串中 $0 \K 在该模式中,整个匹配只是由 .*\S .