preg_replace,否定正则表达式模式
preg_replace, negate regex pattern
这是我要否定的模式:
[\+\-][0-9\.]+
这些是示例行:
Stephane Robert (+1.5 Sets)
Stephane Robert (-1.5 Sets)
Philipp Kohlschreiber
Philipp Kohlschreiber (-1.5 Sets)
Philipp Kohlschreiber (+1.5 Sets)
Player Names (n)
Another Player-Player
我想去掉除数字以外的所有内容,匹配模式,即我只想要正浮点数或负浮点数。
+1.5
-1.5
-1.5
+1.5
我正在使用 php 和 preg_replace。
谢谢!
如果您想查找与您的模式匹配的字符串,只需使用 preg_match()
而不是 preg_replace()
。
你可以用这个。这也将删除其他没有所需值的行。
(?=.*[+-]\d+\.\d+).*([+-]\d+\.\d+).*|(.*)
PHP Code sample
$re = '/(?=.*[+-]\d+\.\d+).*([+-]\d+\.\d+).*|(.*)/m';
$str = 'Stephane Robert (+1.5 Sets)
Stephane Robert (-1.5 Sets)
Philipp Kohlschreiber
Philipp Kohlschreiber (-1.5 Sets)
Philipp Kohlschreiber (+1.5 Sets)
Player Names (n)
Another Player-Player';
$subst = '\1';
$result = preg_replace($re, $subst, $str);
echo $result;
这是我要否定的模式:
[\+\-][0-9\.]+
这些是示例行:
Stephane Robert (+1.5 Sets)
Stephane Robert (-1.5 Sets)
Philipp Kohlschreiber
Philipp Kohlschreiber (-1.5 Sets)
Philipp Kohlschreiber (+1.5 Sets)
Player Names (n)
Another Player-Player
我想去掉除数字以外的所有内容,匹配模式,即我只想要正浮点数或负浮点数。
+1.5
-1.5
-1.5
+1.5
我正在使用 php 和 preg_replace。
谢谢!
如果您想查找与您的模式匹配的字符串,只需使用 preg_match()
而不是 preg_replace()
。
你可以用这个。这也将删除其他没有所需值的行。
(?=.*[+-]\d+\.\d+).*([+-]\d+\.\d+).*|(.*)
PHP Code sample
$re = '/(?=.*[+-]\d+\.\d+).*([+-]\d+\.\d+).*|(.*)/m';
$str = 'Stephane Robert (+1.5 Sets)
Stephane Robert (-1.5 Sets)
Philipp Kohlschreiber
Philipp Kohlschreiber (-1.5 Sets)
Philipp Kohlschreiber (+1.5 Sets)
Player Names (n)
Another Player-Player';
$subst = '\1';
$result = preg_replace($re, $subst, $str);
echo $result;