我想在php中编写正则表达式,以匹配双引号和单引号中的行。实际上我正在编写用于删除css文件中注释行的代码。
像:
"/* I don't want to remove this line */"
但
/* I want to remove this line */
例如:
- valid code /* comment */ next valid code "/* not a comment */" /* this is comment */
预期结果:
- valid code next valid code "/* not a comment */"
请任何人根据我的要求在php中给我一个正则表达式。
答案 0 :(得分:14)
以下应该这样做:
preg_replace( '/\s*(?!<\")\/\*[^\*]+\*\/(?!\")\s*/' , '' , $theString );
测试用例:
$theString = '- valid code /* comment */ next valid code "/* not a comment */" /* this is comment */';
preg_replace( '/(?!<\")\/\*[^\*]+\*\/(?!\")/' , ' ' , $theString );
# Returns 'valid code next valid code "/* not a comment */" '
根据@hexalys的评论,他提到http://www.catswhocode.com/blog/3-ways-to-compress-css-files-using-php
根据该文章,更新后的正则表达式为:
preg_replace( '!/\*[^*]*\*+([^/][^*]*\*+)*/!' , '' , $theString );