我有一个文本正在寻找从中提取重复的4位数字.
例如:
第一个是1234 2)第二个是2098 3)第三个是3213
现在我知道我只需使用以下内容即可获得第一组数字:
/\d{4}/
Run Code Online (Sandbox Code Playgroud)
...返回1234
但是我如何匹配第二组数字,或第三组数字,依此类推......?
编辑:我如何返回2098或3213
Bor*_*din 11
您似乎还没有正确回答您的问题.
解决方案是/g在正则表达式上使用修饰符.在列表上下文中,它会立即找到字符串中的所有数字,就像这样
my $str = 'The first is 1234 2) The Second is 2098 3) The Third is 3213';
my @numbers = $str =~ /\b \d{4} \b/gx;
print "@numbers\n";
Run Code Online (Sandbox Code Playgroud)
产量
1234 2098 3213
Run Code Online (Sandbox Code Playgroud)
或者你可以使用while循环中的标量上下文来迭代它们,就像这样
while ($str =~ /\b (\d{4}) \b/gx) {
my $number = $1;
print $number, "\n";
}
Run Code Online (Sandbox Code Playgroud)
产量
1234
2098
3213
Run Code Online (Sandbox Code Playgroud)
我已经加入了\b图案的正则表达式,使其只匹配整个四位数字,并且不,例如,发现1234在1234567.该/x修正只是让我加空格,这样的模式更容易理解.