Perl - 匹配两个冒号之间的字符串

时间:2014-03-07 00:52:40

标签: regex perl

我的字符串看起来像这样

important stuff: some text 2: some text 3.

我只想打印“重要的东西”。所以基本上我想把所有内容打印到第一个冒号。我确信这很简单,但我的正则表达式并不是那么好。

编辑:对不起,我做了一些愚蠢的事,并给了你一个糟糕的例子。它已得到纠正。

3 个答案:

答案 0 :(得分:3)

只需限制与非冒号匹配的内容[^:]*。请注意,实际上并不需要^:边界,但它们有助于记录正则表达式背后的意图。

my $text = "important stuff: some text 2: some text 3."

if ($text =~ /^([^:]*):/) {
    print "$1";
}

答案 1 :(得分:2)

只考虑结肠split

use strict;
use warnings;

my $string = 'important stuff: some text 2: some text 3.';
my $important = ( split /:/, $string )[0];
print $important;

输出:

important stuff

答案 2 :(得分:1)

好吧,假设它是一个字符串

$test = "sass sg22gssg 22222 2222:  important  important  :"

Assume you want all characters between.

Wrong answer: $test =~ /:(.+):/;  # thank you for the change from .{1,}

Corrected. 
$test =~ /:([^:]*):/; 

print $1; #perl  memory u can assign to a string ;

$ found = $ 1;

作为perl中的正则表达式的备忘单。 cheat sheet

我做过测试。