Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php注释的java正则表达式_Java_Php_Regex - Fatal编程技术网

php注释的java正则表达式

php注释的java正则表达式,java,php,regex,Java,Php,Regex,您好,我正在编写一个java程序来删除一个字符串中的所有注释,conatins php源代码中有人能给我php注释的正则表达式吗??请查看此链接: 他得出了这个解决方案(对于/*…*/注释): 对于/…和#…注释,您应该能够执行以下操作 sourcecode.replaceAll("(//|#).*?[\\n\\r]"); 但要注意以下情况: someString=“示例注释:/*example*/” someString=“示例注释://example” someString=“示例注释

您好,我正在编写一个java程序来删除一个字符串中的所有注释,conatins php源代码中有人能给我php注释的正则表达式吗??请查看此链接:

他得出了这个解决方案(对于
/*…*/
注释):

对于
/…
#…
注释,您应该能够执行以下操作

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]");