Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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
Regex 如何捕获整数与其后继整数之间的任何内容_Regex_Perl - Fatal编程技术网

Regex 如何捕获整数与其后继整数之间的任何内容

Regex 如何捕获整数与其后继整数之间的任何内容,regex,perl,Regex,Perl,如何捕获整数与其后继整数之间的任何内容?例如,假设我们要捕获b3c,它在a1b3c2d中介于1和2之间。下面的代码为我们提供了b3c2d 在这个结构中你需要两个问号。仅使用一个,它将代码的值放入$^R并返回匹配项 'a1b3c2d' =~ / (\d+) (.+) (??{ $1 + 1 }) /x; print $2, "\n"; 输出 在这个结构中你需要两个问号。仅使用一个,它将代码的值放入$^R并返回匹配项 'a1b3c2d' =~ / (\d+) (.+) (??{ $1 + 1 }

如何捕获整数与其后继整数之间的任何内容?例如,假设我们要捕获b3c,它在a1b3c2d中介于1和2之间。下面的代码为我们提供了b3c2d

在这个结构中你需要两个问号。仅使用一个,它将代码的值放入$^R并返回匹配项

'a1b3c2d' =~ / (\d+) (.+) (??{ $1 + 1 }) /x;

print $2, "\n";
输出 在这个结构中你需要两个问号。仅使用一个,它将代码的值放入$^R并返回匹配项

'a1b3c2d' =~ / (\d+) (.+) (??{ $1 + 1 }) /x;

print $2, "\n";
输出 您正在寻找???{…},它将代码块的结果解释为正则表达式,而不是?{…},它总是作为断言成功。您可能希望在这两者之间使用一个非贪婪的量词,以便它在以下数字的第一个匹配处停止。放在一起,/\d++??{$1+1}/x执行此任务

您可能还希望在代码断言之前和之后添加否定断言,以防止匹配不完整的整数,也就是说,您不希望将21的第一个数字视为2。那会给你

/ (\d+) (.+?) (?<!\d) (??{ $1 + 1 }) (?!\d) /x
总之。

您要查找的是???{…},它将代码块的结果解释为正则表达式,而不是?{…},它总是作为断言成功。您可能希望在这两者之间使用一个非贪婪的量词,以便它在以下数字的第一个匹配处停止。放在一起,/\d++??{$1+1}/x执行此任务

您可能还希望在代码断言之前和之后添加否定断言,以防止匹配不完整的整数,也就是说,您不希望将21的第一个数字视为2。那会给你

/ (\d+) (.+?) (?<!\d) (??{ $1 + 1 }) (?!\d) /x

总共。

什么是什么?空格,其他整数…出于好奇,你的字符串来自哪里?i、 它代表什么?整数是数字列表项标记,而字母是列表项文本。所以你试图解析列表的表示?这是您正在使用的自定义格式还是XML/HTML/TeX等常用格式?您应该在问题中包括这一点。通过这种方式,您可能会得到更好的答案,因为如果人们能够看到您的数据的更具代表性的示例,他们可以更好地考虑边缘案例。例如,我把输入想象成1。富2巴。2.富2005酒吧。这不是不可能的,但这会让霍布斯目前的解决方案窒息。到底是什么?空格,其他整数…出于好奇,你的字符串来自哪里?i、 它代表什么?整数是数字列表项标记,而字母是列表项文本。所以你试图解析列表的表示?这是您正在使用的自定义格式还是XML/HTML/TeX等常用格式?您应该在问题中包括这一点。通过这种方式,您可能会得到更好的答案,因为如果人们能够看到您的数据的更具代表性的示例,他们可以更好地考虑边缘案例。例如,我把输入想象成1。富2巴。2.富2005酒吧。这不是不可能的,但这会导致霍布斯目前的解决方案窒息。这看起来与我的解决方案几乎没有什么不同,除了一些关于OP可能想要什么的猜测。我认为防止第二个数字作为较长数字串的一部分被发现会更有用。您还需要检查开头,如a1b3c12!呃!\第二个数字之前的d将永远不匹配。“我应该为你写这封信吗?”博罗丁指出,我相信这封信已经修复。有一件事实际上是有帮助的,而不仅仅是回答一个问题的确切字眼。到目前为止,这对我来说是可行的。如果我所说的对任何人都没有帮助,那么我做了一个错误的猜测,但这并没有害处。我总是把最有根据的东西放在第一位,然后再解释,这样,如果有人只是想要一个字面的答案,他们就不必费力地通过一堆废话来得到答案这看起来与我的解决方案几乎没有什么不同,除了一些关于OP可能想要什么的猜测。我认为防止第二个数字作为较长数字串的一部分被发现会更有用。您还需要检查开头,如a1b3c12!呃!\第二个数字之前的d将永远不匹配。“我应该为你写这封信吗?”博罗丁指出,我相信这封信已经修复。有一件事实际上是有帮助的,而不仅仅是回答一个问题的确切字眼。到目前为止,这对我来说是可行的。如果我所说的对任何人都没有帮助,那么我做了一个错误的猜测,但这并没有害处。我总是把最有根据的东西放在第一位,然后再解释,这样,如果有人只是想要一个字面的答案,他们就不必费力地通过一堆废话来得到答案请注意,这与34d5、3d45、39d4、3d94和3d9d4匹配。不知道它们是否可以接受。请注意,这与34d5、3d45、39d4、3d94和3d9d4匹配。不知道他们是否可以接受。