正则表达式多模式替换

时间:2014-07-16 04:36:56

标签: php regex

寻找正则表达式(对于php)多次替换模式而不影响其余部分。所需的实际替换是反转某些数字,10-1应改为1-10,即" number1" "破折号" "数字2"其中数字是整数(可能有多于1位数)应替换为" number2" "破折号" "数字1&#34 ;.请注意,该模式不允许空格。此模式可以发生任何(未知)次数,包括0。

此文字可以被任何其他文字包围,包括数字,字母,空格,特殊字符。

实施例

     asdasdasd10-1 2-3asdasd 9-2 2 3XSSADSD

应改为

     asdasdasd1-10 3-2asdasd 2-9 2 3XSSADSD

类似地

     <asdasd 10 - 2 dfdsfsdfsdf 8-2

更改为

     <asdasd 10 - 2 dfdsfsdfsdf 2-8

1 个答案:

答案 0 :(得分:3)

使用此:

$replaced = preg_replace('~(\d+)-(\d+)~', '\2-\1', $yourstring);

the demo中,请参阅底部的替换。

<强>解释

  • (\d+)周围的括号将数字捕获到第1组
  • 我们匹配-
  • (\d+)周围的括号将数字捕获到第2组
  • \2-\1替换为第2组+连字符+第1组

<强>参考