Perl/TCL中的Regexp
我有一根绳子,想得到它的一部分。假设我有一个字符串,上面写着“set aid ODU4-4-3”。我只想从中提取ODU。然而字符串的模式不是固定的。它可能有点像ODU,ODU4,ODUX。我不知道怎么取这个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答案
$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:][]+)*/