回答
你想返回的东西匹配一个或多个字符是什么,但:随后是:与第二个你想要做同样的事情,但以$取代它更换。
[^:]
是一个字符类,它比其他':'
任何字符匹配。
[^:]+
表示匹配一个或多个这样的字符。
我不确定需要捕获圆括号。在任何情况下,
([^:]+):
捕获一个或多个非冒号字符后跟一个冒号的序列。
第一个从一行中捕获冒号前面的部分,比如字符串“abc:foo”中的“abc”。更准确地说,它至少与冒号前面的一个非冒号字符(虽然尽可能多)匹配并将它们放入捕获组中。
第二个替代部分,虽然这个时候包括冒号由变量$replace
的内容。
$line =~ /([^:]+):/;
匹配任何不包含:之前:/
如果$行= “http://www.google.com”,它将匹配HTTP(变量$ 1将包含HTTP)
$line =~ s/([^:]+):/$replace/;
这一次,替换变量内容匹配的值$替换
我可能误解了以前的一些答案,但我认为关于秒的疑惑ond的例子。它将而不是通过$替换仅替换捕获的项目(即,直到冒号的一个或多个非冒号)。它将用$replace
替换所有([^:]+):
- 冒号。 (取代上比赛,而不仅仅是捕捉动作。)
这意味着,如果你不包括$replace
冒号(你想要的),你会得到位:
my $line = 'http://www.example.com/';
my $replace = 'ftp';
$line =~ s/([^:]+):/$replace/;
print "Here's \$line now: $line\n";
输出:
Here's $line now: ftp//www.example.com/ # Damn, no colon!
我不知道,如果你只是看示例代码,但你,除非你打算使用捕捉我不知道你真的想在这些例子。
如果您对正则表达式(或Perl)非常不熟悉,则应在尝试perldoc perlre
或perldoc perlretut
之前查看perldoc perlrequick
。
$line =~ /([^:]+):/;
=〜操作符被称为binding operator,它运行对一个标量值regexsubstitution或(在这种情况下$线)。至于正则表达式本身,()
指定一个捕获。捕获将与他们匹配的文本放在特殊的全局变量中。这些变量被编号从1开始,并对应于括号中显示的顺序,所以给定的
"abc" =~ /(.)(.)(.)/;
的$1
变量将包含"a"
,所述$2
变量将包含"b"
,并且$3
变量将包含"c"
(如果你还没有猜到.
匹配一个字符*
)。 []
指定一个字符类。字符类将匹配其中的一个字符,因此/[abc]/
将匹配一个字符,如果它是"a"
,"b"
或"c"
。字符类可以通过以^
开头来取消。否定字符类匹配一个未列在其中的字符,因此[^abc]
将匹配不是"a"
,"b"
或"c"
(例如,"d"
将匹配)的一个字符。 +
被称为量词。量词告诉你前面的模式必须匹配多少次。 +
要求模式匹配一次或多次。 (*
量词要求模式匹配零次或多次)。 :
对正则表达式引擎没有特别的意义,所以它只是一个字面意思:
。
因此,将这些信息放在一起,我们可以看到正则表达式将匹配一个或多个非冒号字符(将此部分保存为$1
),后跟一个冒号。
$line =~ s/([^:]+):/$replace/;
这是一个替代。替换有两个部分,正则表达式和替换字符串。正则表达式部分遵循与正常正则表达式相同的所有规则。替换部分被视为双引号字符串。替换替换掉regex匹配以更换,所以给出下面的代码
my $line = "key: value";
my $replace = "option";
$line =~ s/([^:]+):/$replace/;
的$行变量将持有该字符串"option value"
。
您可能会感兴趣perldoc perlretut
。
*
除了换行符,除非/ m选项被使用,在这种情况下,任何字符
perl的-MYAPE ::正则表达式::解释-e“打印YAPE ::正则表达式:: Explain->新匹配('([^:] +):') - > explain“
The regular expression:
(?-imsx:([^:]+):)
matches as follows:
NODE EXPLANATION
----------------------------------------------------------------------
(?-imsx: group, but do not capture (case-sensitive)
(with^and $ matching normally) (with . not
matching \n) (matching whitespace and #
normally):
----------------------------------------------------------------------
( group and capture to \1:
----------------------------------------------------------------------
[^:]+ any character except: ':' (1 or more
times (matching the most amount
possible))
----------------------------------------------------------------------
) end of \1
----------------------------------------------------------------------
: ':'
----------------------------------------------------------------------
) end of grouping
----------------------------------------------------------------------
- 1. 这些正则表达式是什么意思?
- 2. 这些qr {}正则表达式是什么意思?
- 3. 这是什么意思这个'(?U)'在nginx正则表达式
- 4. 正则表达式(perl)中的[\ 0-9]是什么意思?
- 5. 这个正则表达式模式是什么意思?
- 6. 这个PHP正则表达式模式是什么意思?
- 7. 这是什么正则表达式的意思是“[^>] *
- 8. 正则表达式这是什么正规表达式S#的意思^ */##小号
- 9. 是什么,这些正则表达式
- 10. 什么是正则表达式这些
- 11. 这个正则表达式是什么意思:\\ d {3} - \\ d {4}。*
- 12. 这个正则表达式(\ /?)是什么意思?
- 13. 这是什么意思正则表达式中整理/ I
- 14. 这个正则表达式是什么意思?
- 15. 这个正则表达式是什么意思 - “\ p {Lu}”?
- 16. 正则表达式中的IJ - 这是什么意思?
- 17. php中的这个正则表达式是什么意思?
- 18. 这个正则表达式是什么意思?
- 19. 这个正则表达式是什么意思:[^ \(\)] *?
- 20. 这个正则表达式是什么意思?
- 21. /.../这个Ruby正则表达式是什么意思?
- 22. 这个Javascript语句(正则表达式)是什么意思?
- 23. 这个正则表达式字符串是什么意思?
- 24. 这个正则表达式是什么意思:/[\[\.]/
- 25. 这个PHP正则表达式是什么意思?
- 26. 这个正则表达式是什么意思?
- 27. 这个正则表达式是什么意思?
- 28. 这个正则表达式是什么意思?
- 29. 这个正则表达式是什么意思?
- 30. '|'是什么意思?在这个正则表达式?
我以为第一个是鸡。第二种是头发不好的鸡,第三种是皱着眉头的人拿着一头坏头发的鸡。皱眉的人往往会弄乱数据集,特别是当他们有鸡时 - 所以能够找到它们并用不太破坏性的东西代替它们是一件好事! – daotoad 2009-06-19 21:11:38
我想说最后一个更像是一个吃坏头发的鸡。 (insertfoodhere): – user105033 2009-06-22 20:37:14