用于php评论的java正则表达式

时间:2011-05-05 13:38:53

标签: java php regex

你好我正在写一个java程序来删除一个字符串中的所有注释conatins php源代码可以任何人给我正则表达式的php评论?请

3 个答案:

答案 0 :(得分:3)

请看一下这个链接:http://ostermiller.org/findcomment.html

他到达了这个解决方案(/* ... */评论):

sourcecode.replaceAll("/\\*(?:.|[\\n\\r])*?\\*/","");

对于// ...# ...条评论,您应该可以执行类似

的操作
sourcecode.replaceAll("(//|#).*?[\\n\\r]");

请注意以下类型的情况:

  • someString = "An example comment: /* example */";

  • someString = "An example comment: // example";

  • someString = "An example comment: # example";

答案 1 :(得分:1)

这将非常棘手!

首先,您在PHP中有三种类型的评论:/* ... */,以及//#

但是你需要排除那些属于字符串的部分,特别是因为//可以在字符串中经常出现,作为转义的斜杠字符,并且字符串中的#字符可以是完美的文本的合法部分。

为了解决这个问题,字符串可以是多行的,除了单引号和双引号之外,它们也可以使用Heredoc和Nowdoc语法编写(参见http://php.net/manual/en/language.types.string.php),这可能特别棘手。用正则表达式准确选出。另外,当然,您需要确保自己位于<?php ... ?>标记内。

它可能已经完成了,但说实话,我会说要处理所有这些问题,使用语言解析器而不是正则表达式来尝试这样做会好得多。

答案 2 :(得分:1)

像普拉德利说的那样,你不能简单地写一个正则表达式来做这件事。有太多特殊情况,比如字符串中的类似注释的字符串,以及通过关闭PHP标记提前终止行注释。为了保证正确性,您可能必须编写完整的语言解析器。

然而,如果您愿意使用PHP本身为您进行过滤,this question具有所有答案,并且它应该更加容易且更加健壮。如果您在与Java应用程序相同的计算机上安装了PHP,则可以使用Runtime.exec()运行PHP并获取控制台输出,或者将PHP导出到文件并稍后将其导入程序。