php注释的java正则表达式
您好,我正在编写一个java程序来删除一个字符串中的所有注释,conatins php源代码中有人能给我php注释的正则表达式吗??请查看此链接: 他得出了这个解决方案(对于php注释的java正则表达式,java,php,regex,Java,Php,Regex,您好,我正在编写一个java程序来删除一个字符串中的所有注释,conatins php源代码中有人能给我php注释的正则表达式吗??请查看此链接: 他得出了这个解决方案(对于/*…*/注释): 对于/…和#…注释,您应该能够执行以下操作 sourcecode.replaceAll("(//|#).*?[\\n\\r]"); 但要注意以下情况: someString=“示例注释:/*example*/” someString=“示例注释://example” someString=“示例注释
/*…*/
注释):
对于/…
和#…
注释,您应该能够执行以下操作
sourcecode.replaceAll("(//|#).*?[\\n\\r]");
但要注意以下情况:
someString=“示例注释:/*example*/”代码>
someString=“示例注释://example”代码>
someString=“示例注释:#示例”代码>
- 这将是非常棘手的
首先,PHP中有三种类型的注释:
/**/代码>,以及/
和#
但是您需要排除那些属于字符串的部分,特别是因为/
经常以转义斜杠字符的形式出现在字符串中,并且字符串中的#
字符可能是文本的完全合法部分
为了解决这个问题,字符串可以是多行的,除了单引号和双引号外,还可以使用herdoc和Nowdoc语法(请参阅)编写字符串,使用regex准确识别字符串可能特别困难。当然,您还需要确保自己在
标记中
这可能是可以做到的,但老实说,如果要解决所有这些问题,使用语言解析器要比使用正则表达式好得多。正如Spudley所说,你不能简单地编写正则表达式来完成这项工作。有太多的例外情况,比如字符串中类似注释的字符串,以及通过关闭PHP标记提前终止的行注释。为了保证正确性,您可能需要编写一个完整的语言解析器
然而,如果您愿意使用PHP本身来为您进行过滤,那么它就有了所有的答案,并且应该更容易、更健壮。如果您将PHP安装在与Java应用程序相同的计算机上,则可以使用Runtime.exec()
运行PHP并获取控制台输出,或者将PHP导出到文件,稍后将其导入到您的程序中。这将不会修剪磅或双斜杠注释右侧。它是为/**/代码>注释。更新的answer.PHP允许您以#符号开始注释。您可以在字符串中提及注释。这些可能被合法且重要地用于编写javascript,其中包含注释中的条件编译指令:$s=“/*@cc_on*/…”
还要注意
,如中列出的示例所示
sourcecode.replaceAll("(//|#).*?[\\n\\r]");