$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