私はオンラインで投稿したいJavaファイルがあります。私はファイルをフォーマットするためにPHPを使用しています。正規表現でファイルをフォーマットする必要があります
誰かがコメントを青にする正規表現を知っていますか?
INPUT:
/*****
*This is the part
*I want to turn blue
*for my class
*******************/
class MyClass{
String s;
}
感謝。
私はオンラインで投稿したいJavaファイルがあります。私はファイルをフォーマットするためにPHPを使用しています。正規表現でファイルをフォーマットする必要があります
誰かがコメントを青にする正規表現を知っていますか?
INPUT:
/*****
*This is the part
*I want to turn blue
*for my class
*******************/
class MyClass{
String s;
}
感謝。
Naiiveバージョン:
$formatted = preg_replace('|(/\*.*?\*/)|m', '<span class="blue">$1</span>', $java_code_here);
...テストされていない、YMMV、等...一般的には
、あなただけの定期的な使用して、Javaファイルの特定の部分を解析することができません式 - Javaはregular languageではありません。ファイルに構造体が追加されている場合(「常にコメントの後に改行が続き、クラス定義が続く」など)、そのような場合の正規表現を生成することができます。たとえば、/\*+(.*?)\*+/$
と一致させると、.
は複数の行と一致するとみなされ、$
は行の末尾と一致します。
一般に、正規表現の作業を行うには、まず見つけたいパターン(厳密に言えば口語で)を定義し、それを標準正規表現表記に変換します。
幸運。
シンプルな引用符を解析できる正規表現は、C/C++スタイルの言語でコメントを見つけることができます。
私はJavaがそのタイプであると仮定します。
これは、//スタイルコメント(行の有無にかかわらず)の部分を追加して改訂したものの、これは他の人がPerlのfaqサンプルです。
基本的にはグローバル検索と置き換えを行います。データは、コメントでない場合はそのまま置き換えられます。そうでない場合は、コメントをカラーフォーマットタグで置き換えます。
あなたはこれをPHPに適合させることができるはずです。明快にするために拡張されています(しかしあまりにも明快かもしれません)。
s{
## Comments, group 1:
(
/\* ## Start of /* ... */ comment
[^*]*\*+ ## Non-* followed by 1-or-more *'s
(?:
[^/*][^*]*\*+
)* ## 0-or-more things which don't start with/
## but do end with '*'
/ ## End of /* ... */ comment
|
// ## Start of // ... comment
(?:
[^\\] ## Any Non-Continuation character ^\
| ## OR
\\\n? ## Any Continuation character followed by 0-1 newline \n
)*? ## To be done 0-many times, stopping at the first end of comment
\n ## End of // comment
)
| ## OR, various things which aren't comments, group 2:
(
" (?: \\. | [^"\\])* " ## Double quoted text
|
' (?: \\. | [^'\\])* ' ## Single quoted text
|
. ## Any other char
[^/"'\\]* ## Chars which doesn't start a comment, string, escape
) ## or continuation (escape + newline)
}
{defined $2 ? $2 : "<some color>$1</some color>"}gxse;
http://alexgorbatchev.com/SyntaxHighlighter/またはhttp://qbnz.com/highlighter/のようなソリューションを使用できますか?あなたは車輪を再発明する必要はありません。 =) – Jens