2011-12-26 4 views
2

私は正規表現//.*|(\"(?:\\\\[^\"]|\\\\\"|.)*?\")|(?s)/\\*.*?\\*/を使用してコメント行をエスケープし、それはうまく機能しますが、行if (broper.equals("//BR") && brlnum.equals("0"))に張り付いてコメント行として処理してエスケープします。コメント付きのエスケープラインへの正規表現

どのような修正が必要ですか?

+0

私はあなたが内側に引用符または私はここのhttpからこれを持っていない –

+0

@moonあるかどうかを判断するために使用される再帰関数の内部で、あなたの正規表現を使用する必要があると思う:// stackoverflow.com/questions/1657066/java-regular-expression-finding-comments-in-code/8634091#8634091上記の正規表現を変更して文字列内でのマッチングを避けることができるのでしょうか? – rahulsri

+0

すべてのコメント、つまり行末まで '/ ... 'をマッチさせ、'/* ... */'コメントをブロックしたいと思っていますか? – fge

答えて

0

これは少し危険です。コメント自体に奇数の引用符を含めると失敗します。第二の代替が標準と一致する

//(?:[^"\r\n]*"[^"\r\n]*")*[^"\r\n]*$|/\*.*?\*/ 

:それは心配はない場合でも、あなたは、それによってあなたはこの時点で文字列の中じゃないことを確実にすること、引用符の偶数が続いている//秒を探して行くことができます、ネストされていない/*...*/コメント。 Javaでは

Pattern regex = Pattern.compile("//(?:[^\"\r\n]*\"[^\"\r\n]*\")*[^\"\r\n]*$|/\\*.*?\\*/", Pattern.DOTALL | Pattern.MULTILINE); 
+0

@Pietzcker oレスポンスありがとうございますが、実際には私の基本的な要件は、この型のコメントを取り除かなければならないということです。 'String str = srclines [lineNum]; //コメントをスキップする'手段はseprator (;)。 – rahulsri

+0

あなたはこの正規表現を試しましたか?それは働いていないのですか?もしそうなら、どのテキストが失敗していますか? –

+0

@Pietzcker実際には、コメント文字が二重引用符で囲まれている場合は無視する必要があります。そうでない場合はコメントを削除するために処理する必要があります。//!otherString.contains( "\\ BR")//条件をスキップしてから削除するだけです//条件をスキップします – rahulsri

関連する問題