如何使用正则表达式识别多个可变长度?

时间:2015-12-30 09:35:50

标签: regex perl

我需要一个Perl正则表达式来从字符串中提取6到10位数字。该数字将始终跟随特定单词后跟空格(案例未知)。

例如,如果我要找的单词是'string':

some random text blah blah blahSTRING 1234567890some more random text

期望的输出:

1234567890

另一个例子:

yet more random textra ra rastring 654321hey hey my my

期望的输出:

654321

我想将结果加载到变量中。

3 个答案:

答案 0 :(得分:1)

/string ([0-9]{6,10})/i

string匹配 STRING 字符串,因为表达式以i结尾(不区分大小写的匹配)

匹配空格

(启动一个捕获组以捕获您想要获取的数字

[0-9]{6,10}匹配6到10个地方的数字

maven-failsafe-plugin

答案 1 :(得分:0)

第1组应包含您的号码

/^.*string (\d+).*$/i

答案 2 :(得分:0)

谢谢大家,在所有回复和谷歌搜索之间我最终得到了

#!/usr/local/bin/perl -w
use strict;
my $string = 'sgtusadl;fdsas;adlhstring 12345678daf;slkdfja;dflk';
my ( $number ) = $string =~ m/string\s\d{6,10}/gi;
$number =~ s/[^0-9]//g;
print "number is $number\n";
exit 0;