[英]Perl Match Operator =~
這是一個非常基本的問題,但我找不到任何適當的文檔來解釋這種行為。
("Johnson" =~ /son/ )
返回 true 但(/son/ =~ "Johnson")
返回 false。 確切的原因是什么? 為什么 =~ 運算符在操作數互換時表現不同?
直接退出文檔:
最簡單的正則表達式就是一個單詞,或者更一般地說,是一串字符。 由單詞組成的正則表達式匹配包含該單詞的任何字符串:
"Hello World" =~ /World/; # matches
這個 Perl 語句是關於什么的?
"Hello World"
是一個簡單的雙引號字符串。World
是正則表達式,//
封閉的/World/
告訴 Perl 在字符串中搜索匹配項。 運算符=~
將字符串與正則表達式匹配相關聯,如果正則表達式匹配則產生真值,如果正則表達式不匹配則產生假值。 在我們的例子中,World
匹配"Hello World"
中的第二個單詞,所以表達式為真。
請閱讀http://perldoc.perl.org/perlretut.html
現在,在您的示例中, "Johnson" =~ /son/
匹配,因為在 LHS(Johnson)中找到了=~
(即兒子)的 RHS。 如果/son/ =~ "Johnson"
RHS (Johnson) 在 LHS (son) 中找不到。
嗯...因為 =~ 運算符將標量表達式綁定到模式匹配。
所以它說明了需要給出參數的順序。 你的第二個(/son/ =~ "Johnson")
使用 Johnson 作為模式......並且那個沒有被擊中,因此是錯誤的。
請參閱綁定運算符: https : //users.cs.cf.ac.uk/Dave.Marshall/PERL/node87.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.