台灣最大程式設計社群網站
線上人數
939
 
會員總數:242642
討論主題:187615
歡迎您免費加入會員
討論區列表 >> PHP >> URL獲取,正則的差別
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
URL獲取,正則的差別
價值 : 10 QP  點閱數:198 回應數:9

樓主

GBX.SZ
門外漢
0 1
20 5
發送站內信

捐贈 VP 給 GBX.SZ



---------------
以上正則的差別在哪?
/ 跟 @ 分別的作用是什麼,或是哪個網頁有相關的說明,謝謝




搜尋相關Tags的文章: [ URL ] , [ 正則 ] ,
本篇文章發表於2018-03-08 12:12
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
最有價值解答

小羊窒息
捐贈 VP 給 小羊窒息 檢舉此回應
http://php.net/manual/en/regexp.reference.delimiters.php
本篇文章回覆於2018-03-08 13:59
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
不錯的參考

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
其實兩個用法都大約一樣,但解釋的方式有點不同。

使用 / ...... / 是代表符合某個區塊。
而 @ ...... @ 可以代表是所有符合區塊。(其實就是連續比對的意思了)

如果只是拿來做判斷,用//就可以。但如果是想要做輸出的情況。
似乎要用@@來處理。
註:@其實也可以用來做多重正則連結用

詳細的用法可能要比較懂正則的來說明。
因為一般我大多是搭配//來處理。然後跑 preg_match_all 這個函數來使用。
所以很少利用@@來處理。

正則是一門高深的學問,我到現在也還沒辦法完全搞清楚。
我只是將一些常用的正則保留下來用。
本篇文章回覆於2018-03-08 18:14
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

GBX.SZ
捐贈 VP 給 GBX.SZ 檢舉此回應
to 浩瀚星空:
1樓是直接給PHP官方的解釋,跟你的解釋有出入,不知哪邊可以看到相關的說明,不過倒是沒看到官方有 @...@ 的解釋

或是否舉例其差別在哪?

因為我自己測試的結果是
使用 /.../ 其正則內有特殊符號需加脫逸字元
使用 @...@ 其正則內有特殊符號則加不加脫逸字元都可

例如原題的第一個正則須修正為


第二個正則為


以上兩種都能執行並產出結果
本篇文章回覆於2018-03-09 00:52
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

小羊窒息
捐贈 VP 給 小羊窒息 檢舉此回應
用@做分隔符號, 跟#字號, 或 大括號小括號, 是一樣的,

差別只在於是否需要強制加上【脫逸字元】

(如果你使用的符號, 在你的條件當中也會出現, 就必須加上【脫逸字元】)

==============================
講句直白的, 真正要易讀, 不應該是使用【@】或【#】, 而是使用多數人所使用的 【/】,
並且條件當中, 針對【/】加上脫逸...變成【\/】

這樣比較符合真正的可讀性....(寫程式寫久了的人一看就會知道)

就如同全世界的程式碼只要看到conn幾乎就可以認定是資料庫連線宣告...
(當然也還是有例外啦, 就如同你所看到的, 使用@符號來做為正規化表達式的分隔符號........)
本篇文章回覆於2018-03-09 01:17
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

GBX.SZ
捐贈 VP 給 GBX.SZ 檢舉此回應
to 浩瀚星空:
不好意思,我詳細看了1樓 小羊窒息 給的官方說明,並做了以其他符號當作分隔符的測試

除了,^、+(這個官方有舉例,不知是疏忽還是有特殊用法,我測試的結果是Error)、(、)、[、]、:、\、|、<、>、?,以上無法作為分隔符,其他都能使用

'、" 需特別注意,正則式如以"..."表示,則不能以"作為分隔符, ' 亦同原理
唯獨分隔符為 / 時,正則式裡含有 / 時需加脫逸字元

以上,個人則推測 @ 僅只是作為分隔符之用,無其他意義

所以請大大舉例您所說的

使用 / ...... / 是代表符合某個區塊。
而 @ ...... @ 可以代表是所有符合區塊。

那麼能否舉例說明其差別嗎?或是哪裡有相關的說明,謝謝
本篇文章回覆於2018-03-09 01:49
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

GBX.SZ
捐贈 VP 給 GBX.SZ 檢舉此回應
to 小羊窒息:
(如果你使用的符號, 在你的條件當中也會出現, 就必須加上【脫逸字元】)

果然是這樣啊,沒另做測試,不過大概也猜到是這個模式,感謝

接下來就等 浩瀚星空 大大舉例

使用 / ...... / 是代表符合某個區塊。
而 @ ...... @ 可以代表是所有符合區塊。


其相關的差別

之後我再決定給誰最佳解答
本篇文章回覆於2018-03-09 01:57
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
作者回應

GBX.SZ
捐贈 VP 給 GBX.SZ 檢舉此回應
修正下括號類作為分隔符

括號類必須以相對的符號才能正常執行

如(...)、[...]、{...}、<...>

不能用(...(、[...[以此類推,嘛...稍微想下也是啦...
本篇文章回覆於2018-03-09 02:21
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
回應

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
最佳解答可以直接給小羊。我其實是沒差那點數。

不過一般來說,@的符號,大多數人是為了做多重正則的連接符號使用居多。
而用@@包起來,就是要代表連續處理的意思。

但因為有 preg_match_all 這個可以使用了。@@就變的比較沒有意義了。
preg_match只會匹配到一組,除非你有做連續的宣告特性。所以才會出現@@的用法。

一般來說,現在真的很少看到有人用@@處理了。畢竟用preg_match_all就行了。也比較直覺。
本篇文章回覆於2018-03-09 09:18
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
作者回應

GBX.SZ
捐贈 VP 給 GBX.SZ 檢舉此回應
原來如此,雖然我不了解多重正則的運作,但這不是這次我要問的主軸

且這邊我也只想問preg_match中的@...@所代表的作用而已

想說如果有其他作用,那我也想了解一下,誰知道往後是否會需要用到,多了解多份知識

再次感謝兩位的回答
本篇文章回覆於2018-03-09 14:29
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.