爲什麼PHP正則表達式具有周圍的分隔符?看起來,如果有任何模式修飾符作爲參數傳遞給任何正在使用的函數,它會更清晰。PHP的正則表達式分隔符,有什麼意義?
13
A
回答
6
沒有技術上的原因,它必須是這樣的。
如註釋中所述,底層庫不要求將標誌作爲正則表達式的一部分進行傳遞 - 事實上,擴展必須將這些標誌去掉並作爲單獨的參數傳遞它們。
看起來好像最初的實現者試圖讓它看起來像grep/sed/awk/perl/etc,以便它們對來自這些工具的程序員更加熟悉。
15
分隔符的原因是在模式之後放置標誌。可以將標誌作爲一個單獨的參數傳遞(Java可以這樣做),但這就是Perl最初完成它的方式(以及之前的sed/awk/vi),所以現在它是如何完成的。
不要使用正斜槓:它們太常見了。我個人幾乎總是使用!字符。我幾乎沒有想過那樣。
6
我不知道preg函數的開發者的動機是什麼。我能想到的唯一原因是他們嘗試了一些太難以Perl的方式來做事情。
儘管分隔符允許將標誌與正則表達式一起指定爲一個參數,但將標誌指定爲單獨的參數會更清晰。這就是每個其他正則表達式庫(對於不支持文字正則表達式作爲語言功能的語言)我知道的,包括PHP的preg函數基於的PCRE庫。 preg代碼確實必須經過使用正則表達式從字符串中移除正則表達式分隔符的麻煩,才能將其傳遞給PCRE。
相關問題
- 1. Swift正則表達式和分隔符
- 2. 正則表達式:由分隔符
- 3. 正則表達式分隔字符串
- 4. 正則表達式街道分隔符
- 5. PHP - 正則表達式,替換逗號分隔符,以分號
- 6. 拆分逗號分隔字符串(PHP +正則表達式)
- 7. 爲什麼PHP preg_ *函數需要正則表達式分隔符?
- 8. 涉及嵌套分隔符/正則表達式的正則表達式
- 9. 正則表達式 - PHP中的分隔符問題
- 10. 正則表達式分割字符串的分隔符
- 11. Php正則表達式與安全分隔符
- 12. 這個PHP正則表達式模式是什麼意思?
- 13. 帶有可選分隔符的正則表達式捕獲組
- 14. 正則表達式 - 分隔符之間的所有子串
- 15. 帶有正則表達式分隔符的Java掃描器
- 16. 正則表達式分隔文本中沒有分隔符的url
- 17. 用正則表達式分隔符分割字符串
- 18. 正則表達式:只有找到「那不是分隔符
- 19. 這個PHP正則表達式是什麼意思?
- 20. 這個正則表達式在PHP中意味着什麼?
- 21. 帶分隔符前綴的Perl拆分正則表達式
- 22. 正則表達式逗號分隔號
- 23. 正則表達式 - 用逗號分隔
- 24. Java - 正則表達式 - 組分隔
- 25. Javascript正則表達式拆分,但保留部分分隔符
- 26. C++正則表達式。獲取帶分隔符的字符串
- 27. 正則表達式刪除分隔符和分隔符後的文本
- 28. 這個正則表達式字符串是什麼意思?
- 29. 正則表達式使字符串有意義。蟒蛇
- 30. 分割字符串與正則表達式的分隔符時分隔符被轉義
PCRE根本不允許周圍的分隔符。 PHP preg函數在將它們傳遞給PCRE庫之前將它們剝離。 – 2009-01-27 14:24:09
哇,那麼這都是純粹的試圖成爲perl?我一直原諒語法多年,但現在我可以自由地真正討厭它。謝謝! – Cal 2009-01-27 17:19:50