Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl/TCL中的Regexp_Regex_Perl_Tcl - Fatal编程技术网

Perl/TCL中的Regexp

Perl/TCL中的Regexp,regex,perl,tcl,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。返回所有匹配项的@M42答案

我有一根绳子,想得到它的一部分。假设我有一个字符串,上面写着“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。

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

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

$aid =~ /([A-Z]{3}).*?-\d-\d/;
对于任何长度大于0且不区分大小写的,请使用

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

如果在odu中只需要字母,那么这就可以了

$aid =~ /([[:alpha:]]+)/;
以及Tcl:

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

ODU可以采用什么范围的值?模式类似于ODU-9-1、STS-9-1、STS3C-9-1、ODU4-9-1。问题是ODU可能是ODU,或者根据需要附加一些数字。Nitesh,如果你提到ODU的所有情况,那就太好了。你想要“STS3C-9-1”得到什么结果?我正在写一个程序。援助模式将类似于abc-9-1,abc1-9-1,任何东西3-9-1。我只想取第一个数字的字母部分。也许我得到了答案。我可以用[a-zA-Z]。感谢Sagain ODU不是固定的。它可能会上升到任何一个字母后面跟数字或无。问题是字符串是否存在,就像我描述的模式一样。我只想取第一个模式中的字母表这与'STS3C-9-1'不匹配这一个的结果应该是什么?太好了。但它是如何工作的。这将获取字符串中的所有aplhabet,或者我们可以使用它作为/([:alpha:]).-\d-\d/检查man grep并搜索alpha以获得有关字符类的更多解释。如果您对ODU之后的细节不感兴趣,那么应该这样做/([:alpha:][]+)*/