Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.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 丢弃匹配组中的字符_Php_Regex - Fatal编程技术网

Php 丢弃匹配组中的字符

Php 丢弃匹配组中的字符,php,regex,Php,Regex,我有两个匹配的组,一个接一个地使用长正则表达式模式。在中间我有 ...(?<number>(?:/(?:digit|num))?\d+|)... …((?:/(?:数字| num))?\d+|)。。。 它应该匹配类似于/num9、/digit9或9或空白的内容(因为我需要命名组出现在结果关联数组中,即使它是空的) 模式可以工作,但是如果前两种情况中的一个匹配,是否可以丢弃/字符?我尝试了一个积极的前瞻,但是如果在前瞻之前有表达式,那么你似乎不能使用这些 我试图用正则表达式实现的目

我有两个匹配的组,一个接一个地使用长正则表达式模式。在中间我有

...(?<number>(?:/(?:digit|num))?\d+|)...
…((?:/(?:数字| num))?\d+|)。。。
它应该匹配类似于
/num9
/digit9
9
或空白的内容(因为我需要命名组出现在结果关联数组中,即使它是空的)

模式可以工作,但是如果前两种情况中的一个匹配,是否可以丢弃
/
字符?我尝试了一个积极的前瞻,但是如果在前瞻之前有表达式,那么你似乎不能使用这些


我试图用正则表达式实现的目标可能吗?

基于您的输入,我认为您需要在某个时候捕获
/
,否则整个正则表达式都会失败。同时,您希望忽略它,因此它不能是您命名组的一部分。因此,通过将其置于其外部并使其成为可选,同时确保一个数字前面不直接带有
/
,您可以得到所需的结果:

^/?(?<number>(?:(?:digit|num))?(?<!/)\d+|)$
^/?(?:(?:数字| num))?(?)?

但是,考虑到您缺乏更完整的输入和正则表达式,我不能100%确定这是否适用于您的所有情况。

尝试积极的查找,并将其放在您指定的组之外。@FailedDev这不符合
/9
?@Blake是的,很抱歉没有看到双精度
这是一个非常好的解决方案。我需要开始跳出框框思考。@Blake你会掌握窍门的。。只是需要时间:)