小编ali*_*nia的帖子

匹配Perl中第n个可能的最长字符串

Perl正则表达式的模式匹配量词是"贪婪的"(它们匹配最长的可能字符串).为了迫使比赛"不合适",一个?可以附加到模式量词(*,+).

这是一个例子:

#!/usr/bin/perl

$string="111s11111s";

#-- greedy match
$string =~ /^(.*)s/;
print "$1\n"; # prints 111s11111

#-- ungreedy match
$string =~ /^(.*?)s/;
print "$1\n"; # prints 111
Run Code Online (Sandbox Code Playgroud)

但是如何在Perl中找到第二,第三和......可能的字符串匹配?举一个你的简单例子 - 如果需要更好的一个.

regex string perl pattern-matching

5
推荐指数
1
解决办法
439
查看次数

匹配浮点数> = 100

我正在逐行读取一个文件,并希望得到的行以任何东西而不是AB开头,并且包含一个(至少)三位浮点数后跟一个百分号(即任何浮点数%大于或等于100%).

例如:

AA whatevs 102.342% dontcare #MATCH
AB whatevs 102.342% dontcare #MISMATCH
AC whatevs 12.3042% dontcare #MISMATCH *
AD whatevs 102% dontcare #MATCH *
AE whatevs 2002.3042% dontcare #MATCH
AF whatevs 22.3021% dontcare #MISMATCH
AG whatevs 102.342 12.342% dontcare #MISMATCH **
Run Code Online (Sandbox Code Playgroud)

到目前为止,我有以下正则表达式解决方案,它没有AD whatevs 102% dontcare明显的原因捕获.

/^(?!AB).*\d{3}\.\d*%/
Run Code Online (Sandbox Code Playgroud)

/^(?!AB).*\d{3}\.?\d*%/也不起作用,因为它匹配AF whatevs 22.3021% dontcare.

我知道我可以通过将我的正则表达式分成两个子正则表达式来实现它..但是,我想看看是否有一个正则表达式解决方案.

regex floating-point perl pattern-matching string-matching

2
推荐指数
1
解决办法
143
查看次数

C 中可变大小数组的陷阱

以下代码段使用标准正确编译gcc。这里可能存在哪些陷阱?--特别是对于内核级开发。

int n;

f(){n=2;}
g(){int b[n];}

main(){
        int a[n];
        f();
        g();
}
Run Code Online (Sandbox Code Playgroud)

c arrays gcc variable-length-array

-4
推荐指数
1
解决办法
116
查看次数