2

我有一个字符串,想得到它的一部分。假设我有一个字符串说“设置辅助 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

4 回答 4

3

和 Tcl:

if {[regexp {^[[:alpha:]]+} $string letters]} {
    puts $letters
} 
于 2012-04-20T10:06:51.003 回答
2

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

my @allmatches = $aid =~ /([A-Z]{3}).*?\-\d\-\d/;
于 2012-04-20T09:33:44.707 回答
1

怎么样:

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

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

$aid =~ /([a-zA-Z]+).*?-\d-\d/;
于 2012-04-20T09:36:10.423 回答
1

如果您只想要odu中的字母,那么这应该可以解决问题

$aid =~ /([[:alpha:]]+)/;
于 2012-04-20T09:41:28.670 回答