![]() ![]() ![]() ![]() |
|||||
|
|||||
樓主 GBX.SZ ![]()
![]() ![]() |
1樓
最有價值解答
小羊窒息 ![]() ![]() |
http://php.net/manual/en/regexp.reference.delimiters.php
本篇文章回覆於2018-03-08 13:59
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
2樓
不錯的參考
浩瀚星空 ![]() ![]() |
其實兩個用法都大約一樣,但解釋的方式有點不同。
使用 / ...... / 是代表符合某個區塊。 而 @ ...... @ 可以代表是所有符合區塊。(其實就是連續比對的意思了) 如果只是拿來做判斷,用//就可以。但如果是想要做輸出的情況。 似乎要用@@來處理。 註:@其實也可以用來做多重正則連結用 詳細的用法可能要比較懂正則的來說明。 因為一般我大多是搭配//來處理。然後跑 preg_match_all 這個函數來使用。 所以很少利用@@來處理。 正則是一門高深的學問,我到現在也還沒辦法完全搞清楚。 我只是將一些常用的正則保留下來用。
本篇文章回覆於2018-03-08 18:14
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
3樓
作者回應
GBX.SZ ![]() ![]() |
to 浩瀚星空:
1樓是直接給PHP官方的解釋,跟你的解釋有出入,不知哪邊可以看到相關的說明,不過倒是沒看到官方有 @...@ 的解釋 或是否舉例其差別在哪? 因為我自己測試的結果是 使用 /.../ 其正則內有特殊符號需加脫逸字元 使用 @...@ 其正則內有特殊符號則加不加脫逸字元都可 例如原題的第一個正則須修正為 第二個正則為 以上兩種都能執行並產出結果
本篇文章回覆於2018-03-09 00:52
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
4樓 |
用@做分隔符號, 跟#字號, 或 大括號小括號, 是一樣的,
差別只在於是否需要強制加上【脫逸字元】 (如果你使用的符號, 在你的條件當中也會出現, 就必須加上【脫逸字元】) ============================== 講句直白的, 真正要易讀, 不應該是使用【@】或【#】, 而是使用多數人所使用的 【/】, 並且條件當中, 針對【/】加上脫逸...變成【\/】 這樣比較符合真正的可讀性....(寫程式寫久了的人一看就會知道) 就如同全世界的程式碼只要看到conn幾乎就可以認定是資料庫連線宣告... (當然也還是有例外啦, 就如同你所看到的, 使用@符號來做為正規化表達式的分隔符號........)
本篇文章回覆於2018-03-09 01:17
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
5樓
作者回應
GBX.SZ ![]() ![]() |
to 浩瀚星空:
不好意思,我詳細看了1樓 小羊窒息 給的官方說明,並做了以其他符號當作分隔符的測試 除了,^、+(這個官方有舉例,不知是疏忽還是有特殊用法,我測試的結果是Error)、(、)、[、]、:、\、|、<、>、?,以上無法作為分隔符,其他都能使用 '、" 需特別注意,正則式如以"..."表示,則不能以"作為分隔符, ' 亦同原理 唯獨分隔符為 / 時,正則式裡含有 / 時需加脫逸字元 以上,個人則推測 @ 僅只是作為分隔符之用,無其他意義 所以請大大舉例您所說的 使用 / ...... / 是代表符合某個區塊。 而 @ ...... @ 可以代表是所有符合區塊。 那麼能否舉例說明其差別嗎?或是哪裡有相關的說明,謝謝
本篇文章回覆於2018-03-09 01:49
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
6樓
作者回應
GBX.SZ ![]() ![]() |
to 小羊窒息:
(如果你使用的符號, 在你的條件當中也會出現, 就必須加上【脫逸字元】) 果然是這樣啊,沒另做測試,不過大概也猜到是這個模式,感謝 接下來就等 浩瀚星空 大大舉例 使用 / ...... / 是代表符合某個區塊。 而 @ ...... @ 可以代表是所有符合區塊。 其相關的差別 之後我再決定給誰最佳解答
本篇文章回覆於2018-03-09 01:57
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
7樓
作者回應
GBX.SZ ![]() ![]() |
修正下括號類作為分隔符
括號類必須以相對的符號才能正常執行 如(...)、[...]、{...}、<...> 不能用(...(、[...[以此類推,嘛...稍微想下也是啦...
本篇文章回覆於2018-03-09 02:21
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
8樓 |
最佳解答可以直接給小羊。我其實是沒差那點數。
不過一般來說,@的符號,大多數人是為了做多重正則的連接符號使用居多。 而用@@包起來,就是要代表連續處理的意思。 但因為有 preg_match_all 這個可以使用了。@@就變的比較沒有意義了。 preg_match只會匹配到一組,除非你有做連續的宣告特性。所以才會出現@@的用法。 一般來說,現在真的很少看到有人用@@處理了。畢竟用preg_match_all就行了。也比較直覺。
本篇文章回覆於2018-03-09 09:18
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
9樓
作者回應
GBX.SZ ![]() ![]() |
原來如此,雖然我不了解多重正則的運作,但這不是這次我要問的主軸
且這邊我也只想問preg_match中的@...@所代表的作用而已 想說如果有其他作用,那我也想了解一下,誰知道往後是否會需要用到,多了解多份知識 再次感謝兩位的回答
本篇文章回覆於2018-03-09 14:29
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
回覆 |
如要回應,請先登入. |