簡體   English   中英

Perl 匹配運算符 =~

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM