Perl / TCL中的Regexp

时间:2012-04-20 09:27:00

标签: regex perl tcl

我有一个字符串,想要获得它的一部分。假设我有一个字符串说“set aid ODU4-4-3”。我想从它只采取ODU。而字符串的模式不固定。可能有些人喜欢ODU,ODU4,ODUX。我没有得到如何获取此

$aid = "ODU4-9-1";
$aid =~ /(\w)+\d*-\d-\d/;
print " value is $1"

输出

value is ODU4

我需要的值只是ODU,而字符串模式可能会改变。它可能只是ODU-4-3或者可以是ODU4-4-3。

4 个答案:

答案 0 :(得分:3)

和Tcl:

if {[regexp {^[[:alpha:]]+} $string letters]} {
    puts $letters
} 

答案 1 :(得分:2)

@ M42的答案版本返回所有匹配项:

my @allmatches = $aid =~ /([A-Z]{3}).*?\-\d\-\d/;

答案 2 :(得分:1)

怎么样:

$aid =~ /([A-Z]{3}).*?-\d-\d/;

对于任何长度大于0且不区分大小写的情况,请使用

$aid =~ /([a-zA-Z]+).*?-\d-\d/;

答案 3 :(得分:1)

如果你只想在 odu 中使用字母,那么这应该可以解决这个问题

$aid =~ /([[:alpha:]]+)/;
相关问题