如何提取冒号之前的字符串。我不要在冒号后面的字符串。
样本输入:
asfmqwdbd/ilcp:dftqclk_rep
所需结果:
asfmqwdbd/ilcp
我的代码:
if (m/^(\S+))
$inst_name = $1;
答案 0 :(得分:1)
假设分号(;
)是问题中的错字,而您实际上的意思是冒号(:
),则这是正确的正则表达式:
^
开头的锚点([^:]+)
):
)结尾#!/usr/bin/perl
use warnings;
use strict;
while (<DATA>) {
print "$1\n" if /^([^:]+):/;
}
exit 0;
__DATA__
asfmqwdbd/ilcp
asfmqwdbd/ilcp:dftqclk_repasfmq
asfmqwdbd/ilcp;dftqclk_repasfmq
试运行:
$ perl dummy.pl
asfmqwdbd/ilcp
答案 1 :(得分:0)
根据您的问题,您想要这样的输出 “ asfmqwdbd / ilcp” 为此,您可以使用“ ^([\ S] +):”,然后使用$ 1。
答案 2 :(得分:0)
我认为您正在寻找
$ echo "asfmqwdbd/ilcp:dftqclk_repasfmq" | perl -pe 's/(\S+):.*/$1/ '
asfmqwdbd/ilcp
或
$ perl -le ' $x="asfmqwdbd/ilcp:dftqclk_repasfmq"; $x=~s/(\S+):.*/$1/; print $x '
asfmqwdbd/ilcp
$