回答
你想返回的東西匹配一個或多個字符是什麼,但:隨後是:與第二個你想要做同樣的事情,但以$取代它更換。
[^:]
是一個字符類,它比其他':'
任何字符匹配。
[^:]+
表示匹配一個或多個這樣的字符。
我不確定需要捕獲圓括號。在任何情況下,
([^:]+):
捕獲一個或多個非冒號字符後跟一個冒號的序列。
第一個從一行中捕獲冒號前面的部分,比如字符串「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