javascript - Dört boşluk ile başlayan tüm satırları eşleştir
Dört boşluk karakteri ile başlayan tüm satırları pre etiketleri ile sarmaya çalışıyorum. Şimdiye kadar sahip olduğum şey bu
Text = Text.replace(new RegExp("( {4}.+?)<br />", "g"), "$1\n");
Text = Text.replace(new RegExp("( {4}.+?)\n", "g"), "<pre class=\"brush: js;\">$1</pre>");
Çalışıyor ama her satırı bir pre içine sarıyor. Ben tüm bloğu sarmasını istiyorum.
Cevap #1
Belki bunun gibi bir şey işe yarar mı? Birden fazla satırı peş peşe eşleştiriyor..
( {4}.*(\n {4}.*)*)\n
Cevap #2
Bunu gerçekten düzenli ifadelerle mi yapmanız gerekiyor? Regexler havalı ve kullanışlıdır ama araç kutunuzdaki tek araç değiller ve bazen bir şeyi direkt yapmak ve gerçek sorunlara geçmek en iyisidir. Ben bunu sadece satırlara bölerdim ve önceden işlenmesi gereken şeyler için bir akümülatörle satır satır ayrıştırırdım:
var lines = text.split('\n');
var pre = [ ];
var out = [ ];
for(var i = 0; i < lines.length; ++i) {
if(lines[i].match(/^ /)) {
pre.push(lines[i]);
}
else if(pre.length > 0) {
out.push('<pre>' + pre.join('\n') + '</pre>' + '\n');
out.push(lines[i]);
pre = [ ];
}
else {
out.push(lines[i]);
}
}
if(pre.length > 0) {
out.push('<pre>' + pre.join('\n') + '</pre>' + '\n');
}
text = out.join('\n');
Bu, anlaşılmaz bir regex kadar zekice olmayabilir ama en azından altı ay sonra ne yaptığını anlayabileceksiniz.
http://jsfiddle.net/ambiguous/tFNyv/
