java регулярное выражение для комментария php

привет, я пишу программу java, чтобы удалить все комментарии из строки, которая кодирует исходный код php, может ли кто-нибудь дать мне регулярное выражение для комментария php? пожалуйста

Посмотрите на эту ссылку: http://ostermiller.org/findcomment.html

Он приходит к этому решению (для /* ... */ comments):

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

Для // ... и # ... комментариев вы должны быть способны сделать что-то вроде

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

Остерегайтесь следующих ситуаций:

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

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

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

Как сказал Спэдли, вы не можете просто написать регулярное выражение, чтобы сделать это. Слишком много исключительных случаев, таких как строки с комментариями внутри строк, а комментарии к линиям заканчиваются раньше, закрывая теги PHP. Чтобы гарантировать правильность, вы могли бы написать полный парсер языка.

Однако , если вы хотите использовать PHP для фильтрации, для этого вопроса есть все ответы, и это должно быть значительно проще и надежнее. Если у вас установлен PHP на том же компьютере, что и приложение Java, вы можете запустить PHP с использованием Runtime.exec() и получить вывод консоли или экспортировать PHP в файл и импортировать его позже в свою программу.

Это будет очень сложно!

Для начала у вас есть три типа комментариев в PHP: /* ... */ , а также // и # .

Но вам нужно исключить те, которые являются частью строки, тем более, что // может появляться довольно часто в строках, в качестве экранированного символа косой черты, а символ # внутри строки может быть совершенно законной частью текста.

Чтобы усугубить эту проблему, строки могут быть многострочными, и в дополнение к одиночным и двойным кавыдам они также могут быть написаны с использованием синтаксиса Heredoc и Nowdoc (см . http://php.net/manual/en/language.types . string.php ), что может быть особенно сложно определить с помощью регулярного выражения. Кроме того, конечно, вы должны быть уверены, что находитесь в тегах <?php ... ?> .

Возможно, это можно сделать, но, честно говоря, я бы сказал, что со всем этим нужно иметь дело с гораздо более удобным использованием парсера языка, чем регулярное выражение, чтобы попытаться это сделать.