Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用regex“而不是~”?_Php_Regex - Fatal编程技术网

Php 如何使用regex“而不是~”?

Php 如何使用regex“而不是~”?,php,regex,Php,Regex,我在PHP中使用正则表达式 从字符串中,我要替换所有非此格式的字符串: ([0-9]*\-*[0-9]+) 比如说, 1-2,3-4,1 你很好,但是 美国广播公司,123,12-3 不接受 有什么表达方式吗 "except ([0-9]*\-*[0-9]+)" 在正则表达式中?在我看来,您可以使用负面前瞻,这将限制更一般的字符类,例如,在您的情况下,它可以是除或以外的任何字符: 看 请注意,\与后跟0个或更多字符的文字匹配,这些字符不是由于[^]*,而是由于[^]*,但不符合您的模式\d

我在PHP中使用正则表达式

从字符串中,我要替换所有非此格式的字符串:

([0-9]*\-*[0-9]+) 
比如说,

1-2,3-4,1

你很好,但是

美国广播公司,123,12-3

不接受

有什么表达方式吗

"except ([0-9]*\-*[0-9]+)"

在正则表达式中?

在我看来,您可以使用负面前瞻,这将限制更一般的字符类,例如,在您的情况下,它可以是除或以外的任何字符:

请注意,\与后跟0个或更多字符的文字匹配,这些字符不是由于[^]*,而是由于[^]*,但不符合您的模式\d*-?\d+

如果要在修剪空格和逗号时删除这些元素,可以使用

,?\s*\((?!\d*-?\d+\))[^()]*\)

参见

[0-9]*\-*[0-9]+是正则表达式吗?!要么匹配要么不匹配。^除了\[0-9\]\*\-\*\[0-9\]\+\$:-pto匹配所有与[0-9]*\-*[0-9]+不匹配的格式。就像在问题中,匹配所有不属于这种格式的格式:1-2,2->毕竟匹配所有不属于[0-9]*\-*[0-9]+格式的格式。您是要匹配整行中的所有三种格式吗?或者他们是连续三个独立的例子?因为123的匹配方式相同,1也是一个可以接受的答案。如果它对你有用的话,如果答案对你有用的话,也请考虑一下投票。
,?\s*\((?!\d*-?\d+\))[^()]*\)