我的字符串看起来像这样
important stuff: some text 2: some text 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
我做过测试。