2016-03-31 18 views
0

Java kodum var ve C dosyasını ayrıştırıp tüm yorumları bulmak istiyorum. Pattern.compile("/\\*(?:.|[\\n\\r]|[\\n])*?\\*/")Java: Normal İfade yığın taşmasına neden oluyor

sorun bazı giriş bellek taşması olmasıdır: Bu Regular Expression kullanıyorum /* ile başlayıp */ ile sona çizgi veya çizgiler vardır tüm yorumları bulmak için

.

Bu sorunu okudum ve anladım | düzenli ifadede kullanmaktan kaçınacağım. Ben regex dünyasına yeniyim. Birisi bana daha kolay yardımcı olabilir mi?

+1

Soruna neden olan girdiyi dahil etmeyi düşünür müsünüz? – f1sh

+0

Ne ortak bir zayıf desen. "Pattern.compile" ("(? S) /\\*.*?\\*/") 'veya daha iyilerini kullanın:' "/ \\ * [^ *] * \\ * + (?: [^/*] [^ *] * \\ * +) */"' –

cevap

1

Linebreak işleminiz doğru değil.

bu kullanmayı deneyin:

Pattern.compile("/\\*.*?\\*/", Pattern.MULTILINE|Pattern.DOTALL); 

Bu durum linebreaks eşleşecek şekilde . karakterini sağlar.

+0

Desen + açıklama için teşekkürler! –

+0

@ user5699936: Aklınızda bulundurun: 1) çok uzun yorumlar ile, bu işe yaramıyor ya da çok yavaş olacak, 2) 'Pattern.MULTILINE' kaldırılmalıdır. * 'Bu' * değil, 'Pattern.DOTALL'' '', '' 'satırsonu dizileriyle eşleşir. –