$buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer);
這是什麼規則表達式意思是
有沒有什麼地方我可以學習正則表達式?我知道基礎知識。
$buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer);
這是什麼規則表達式意思是
有沒有什麼地方我可以學習正則表達式?我知道基礎知識。
這似乎可以用來匹配的評論/* … */
:
/\*
相匹配的領先的/*
[^*]*\*+
匹配除*
任何以下字符後面跟着一個或多個*
([^/][^*]*\*+)*
matche的Zero或字符的任何字符開始除/
多個序列(以避免過早地結束,因爲最後一個字符是*
),隨後除*
任何字符,接着是一個或多個*
/
結束相匹配/
步行RegExp解析器。 +1 – Marko 2010-07-20 07:48:37
哇優秀..爲什麼我沒有得到那個大聲笑..你總是給我的問題:)再次感謝..但我想它會刪除所有空白空間和行嗎?可以 ? – 2010-07-20 07:49:23
不,它並不是因爲它必須以/ – 2010-07-20 07:51:22
它在上面的註釋中說了那句話。它刪除評論(來自CSS文件)。
你可能會發現它在
是的。在phpsnippets上獲得它 – 2010-07-20 07:57:49
! # ... Beginning of the regex...
/ # 1. Match a slash
\* # 2. and an asterisk
[^*]* # 3. followed by some non-asterisks
\*+ # 4. and then at least 1 asterisks
( # And then some groups of
[^/] # 5. match a non-slash
[^*]* # 6. followed by some non-asterisks
\*+ # 7. and then at least 1 asterisks
)* #
/ # 8. And finally a slash
! # ... End of the regex ...
.——————<—————————————<————————————. .———<——. .——<——. | .——<———. .——<——. | | | | | | | | | | | [/]—>—[ * ]—>—o—[^*]—' .—>—[ * ]—>—o—>—o—>—[^/]—>—o—[^*]—' .—>—[ * ]—>—o—' .—>—[/] | | | | | | '————>———' | '———>————' | '——————>——————————————>—————————————' 1 2 3* 4+ ( 5 6* 7+ )* 8
舉例如:
/* blah *** f /* foo*** */
12333333444566675666777578
這是用來刪除C風格的評論。
'O_O'真棒形象化!我喜歡「最後一閃」。 ; P – deceze 2010-07-20 08:16:48
@deceze:哎呀斜線:p – kennytm 2010-07-20 08:20:30
我喜歡ascii藝術:) – atamanroman 2010-07-20 11:51:12
這意味着有人喝醉了。
說真的,我甚至不想嘗試完全解碼,但它看起來像是用來代替正斜槓和星號的組合(例如刪除它們)。
這是正則表達式給正則表達式一個壞名字。
除了Chris對regular-expressions.info的建議之外,實際上應該查看PHP正則表達式的參考文檔,這些正則表達式實際上是PCREs(Perl Compatible Regular Expressions),這意味着您應該也可以通讀Perl正則表達式文檔。
它一直青睞,因爲我拿起它的一個版本,但我好像記得從奧賴利精通正則表達式是一本好書在正則表達式中:
走一步,一步一個腳印時間:
的!僅用作正則表達式開始/結束的分隔符,因此它們不用於匹配。
/\*
匹配一個正斜槓後跟一個星號(星號是一個特殊字符,因此被反斜線轉義)。
[^*]*
匹配0個或多個不是星號的字符。
\*+
匹配一個或多個恆星。
[^/]
匹配任何不是正斜槓
[^*]*
匹配0個或更多字符不是明星。
\*+
匹配一個或多個恆星。
括號內的最後一位,後面跟着一個星號,匹配該段0或更多次。
/
匹配另一個正斜槓。
總的來說,它匹配/*asdf***asdfasdf***/
之類的任何圖案,即它匹配那種風格的評論。
http://www.regular-expressions.info/ – 2010-07-20 07:41:48
無論誰在附近留下評論而寫這篇文章,都應該受到一些嚴厲的懲罰。 '* _ *' – deceze 2010-07-20 07:44:09
這是考試的一個很好的問題!另外,查看哪些字符串與正則表達式匹配將會非常有趣。我覺得懶得「解密」它。 – 2010-07-20 07:44:56