Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.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 perl正则表达式获取尾随数字_Regex_Perl - Fatal编程技术网

Regex perl正则表达式获取尾随数字

Regex perl正则表达式获取尾随数字,regex,perl,Regex,Perl,我试着从最后出现的一个或多个数字中分离出特定数量的文本。当有一个尾随数字时,以下选项有效,但当有两个或更多尾随数字时,以下选项无效?(\d+)不应该在“P\u TIME12”中得到“12”吗 导致 word ABC digits 1 word DFRES digits 3 word TIME1 digits 2 TIA\w包含数字,如果只有数字在末尾,请使用[\u a-zA-Z] 而且\w+是贪婪的,它将首先匹配整个单词,并且不会为\d+留下任何内容,因此它必须回溯1个字符,最后一个字符对\d

我试着从最后出现的一个或多个数字中分离出特定数量的文本。当有一个尾随数字时,以下选项有效,但当有两个或更多尾随数字时,以下选项无效?(\d+)不应该在“P\u TIME12”中得到“12”吗

导致

word ABC digits 1
word DFRES digits 3
word TIME1 digits 2

TIA

\w
包含数字,如果只有数字在末尾,请使用
[\u a-zA-Z]

而且
\w+
是贪婪的,它将首先匹配整个单词,并且不会为
\d+
留下任何内容,因此它必须回溯1个字符,最后一个字符对
\d+
来说足够了


如果您需要惰性运算符,因为中间有数字,请使用<代码> ^ p'(\W+)($D+)/<代码> < /P> < P> <代码> \W\/COD>包含数字,而使用<代码> [Z-A Z-Z] < /COD>,如果只有数字在结尾

而且
\w+
是贪婪的,它将首先匹配整个单词,并且不会为
\d+
留下任何内容,因此它必须回溯1个字符,最后一个字符对
\d+
来说足够了

如果你需要懒惰操作符,因为你中间有数字,使用<代码> ^ p'(\W+)(\d+)$< /代码>

w匹配“Word字符”,包括数字和下划线。因为您要求至少一个数字(\d+),\w是贪婪的,并且匹配一个数字

您应该比
\w
更明确,并使用
/^p([A-Za-z]+)(\d+)$/

\w匹配“单词字符”,包括数字和下划线。因为您要求至少一个数字(\d+),\w是贪婪的,并且匹配一个数字

/^P_(\D+)(\d+)$/
您应该比
\w
更明确,而应该使用
/^p([A-Za-z_]+)(\d+)$/

/^P_(\D+)(\d+)$/
字符类
\d
与数字匹配;它的否定
\D
匹配其他所有内容


字符类
\d
与数字匹配;它的否定
\D
匹配其他所有内容。

如果您可以在第一部分中捕获空格,一个更简单的解决方案是在尾随数字之前不加密地匹配任何内容,然后贪婪地匹配尾随数字

这样做的好处是,您可以匹配第一部分中的偶数数字(前提是它们不会出现在末尾)。 还有空间,如前所述

即:

my@strs=qw(P_1ABC1 P_DFRES3 P_3TIME12);
foreach(@strs){
如果(/^P(.*)(\d+)$/){

打印“>$1$2如果您可以在第一部分中捕获空格,一个更简单的解决方案是在尾随数字之前不加密地匹配任何内容,然后贪婪地匹配尾随数字

这样做的好处是,您可以匹配第一部分中的偶数数字(前提是它们不会出现在末尾)。 还有空间,如前所述

即:

my@strs=qw(P_1ABC1 P_DFRES3 P_3TIME12);
foreach(@strs){
如果(/^P(.*)(\d+)$/){

打印“>$1$2银行,正是我需要的!谢谢,正是我需要的!使用
\pL
匹配字母,而不是
\w
。使用
\pL
匹配字母,而不是
\w
>1ABC<      >1<
>DFRES<     >3<
>3TIME<     >12<