首页 > 解决方案 > 如何提取冒号前的字符串?

问题描述

如何提取冒号前的字符串。我不想要冒号后面的字符串。

样本输入:

asfmqwdbd/ilcp:dftqclk_rep

期望的结果:

asfmqwdbd/ilcp

我的代码:

if (m/^(\S+))
  $inst_name = $1;

标签: regexperl

解决方案


假设分号 ( ;) 是问题中的拼写错误,而您实际上的意思是冒号 ( :),这将是正确的正则表达式:

  • 锚点在行首 ( ^)
  • 捕获一个或多个非冒号字符 ( ([^:]+))
  • 匹配必须以冒号 ( :)结尾
#!/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

推荐阅读