舉一個例子,/[ ]{0,3}/
與/ {0,3}/
有什麼不同?方形剎車片中的空間是否與空間不同?
回答
它可以有不同的含義,如果x
修改標誌,允許在正則表達式記號之間的「自由空間」啓用(爲便於閱讀,並允許在正則表達式註釋)。但是如果這個設置沒有啓用,那麼兩者之間沒有功能上的區別。
請參閱本Regex Tutorial這個選項特別,它規定的詳細說明:
...自由間隔模式具有字符類中沒有任何影響。空格 和字符類中的換行符將包含在 字符類中。
此外,PHP特定權限,參見PHP手冊爲PCRE Pattern Modifiers其中指出:
X(PCRE_EXTENDED)如果設定了此修正,空白數據字符圖案中的 被完全忽略除了當逃跑或 字符類中...
另請參閱this other Regex Tutorial page on specifying modifiers解釋如何實現正則表達式的不同口味的修改。
改性劑標誌可以被包括在正則表達式本身作爲(?x)
意思自由空間是從正則表達式該點使能向前到正則表達式的結尾(或至多閉合(?-x)
)。特別是用於PHP,改性劑標誌可以通過拖尾正則表達式例如(使用您的示例中的一個)/ {0,3}/x
方括號格式([ ]
)明確地表示文字空間不管設置的被施加到整個表達式,並海事組織是自我記錄;它非常明確地顯示了devoloper使用文字空間的意圖,可能優先於「\s
」字符類(其中還包括製表符和新行)。
此外,再次只是國際海事組織,這是一個「逃避」作爲文字空間的好方法,而不是使用「\
」,這很容易被未來的代碼維護人員誤解或忽略。
如何啓用/禁用此設置? –
這個「自由空間」設置可以在沒有標誌的情況下啓用嗎? –
@EmanuilRusev更新了一些有關修飾符的良好鏈接的問題。我對PHP的理解是有限的,但我相信答案是否定的,你會在正則表達式字符串的末尾看到標誌(尾隨正則表達式分隔符)。不過,可能會有更多的「全球」設置可以實現它。你應該能夠測試它是否被啓用,例如通過測試「xx」對/ xx /如果它未被啓用應匹配,但不應該匹配,如果它啓用(因爲你需要明確地逃避空間爲一個文字,以便它不被視爲可用空間)。 – Sepster
它們會產生相同的結果,但方括號內的結果更具可讀性並且更加慎重。
我個人寧願使用\s
,除非文字空間是唯一允許的。
- 1. 概念上,Oracle表空間是否與磁盤空間相同?
- 2. 開放源代替空中剎車?
- 3. 與方形空間jQuery注入6
- 4. 與空的空間
- 5. Permgen空間與元空間
- 6. JsonObject.GetNamedString返回空間而不是空間
- 7. PHP:剝離空間,但不是中間的空間?
- 8. 方形空間中的日曆
- 9. CSS不與空間
- 10. 加入不同命名空間的命名空間房間
- 11. 形狀不是類或名稱空間
- 12. UISegmentedControl中的條形之間的空間
- 13. 空間與高度相同
- 14. CSS剎車燈與jQuery
- 15. 什麼是不同的Java堆空間?
- 16. SVG中六邊形之間的空間
- 17. 與空間相反的空間維護
- 18. %2520(雙空間)的URL與空間
- 19. 是否可以引用兩個命名空間相同的命名空間?
- 20. Java中的停車場,遞減空間
- 21. 額外的空間是否會影響磁盤空間?
- 22. 繪圖與空白的長方形的周長中間
- 23. 空間相同
- 24. SVG Circle與D3.js之間的矩形之間的空隙不是通用的
- 25. 幫助與矩形的座標空間
- 26. 檢查TempDB是否空間不足
- 27. FirefoxDriver()方法不顯示與cntrl +空間
- 28. 「不命名類型與命名空間相同」是否適用於命名空間模塊?
- 29. 瑪雅參考文獻是否與名稱空間相同?
- 30. CSS剎車線但不是字
這些基本上是相同的,如果不與'(?x)'開關結合使用。 – Cylian
@Cylian,你能詳細點嗎? –
好問題,也有逃脫的空間'/ \ {0,3} /'和空格字符的十六進制表示'/ \ x20 {0,3} /' –