помогите с регуляркой
Программа
<html> <head> <title>Документ без названия</title> <meta charset="utf-8"> </head> <body> <p style ='display:none'> I тур 26 апреля 2013 г. 1. Круглолесское - Средний перенос 27 апреля 2013 г. 2. Ветераны футбола - Саблинское на КДК 3. Новокавказский - АСХК 3-0 26 апреля 2013 г. 4. Ал. ДЮСШ - Калиновское 7-2 II тур 3 мая 2013 г. 1. Средний - Калиновское 4-1 2. Новокавказский - Ал. ДЮСШ 4-4 3. АСХК - Саблинское 4-8 4. Круглолесское - Ветераны футбола 0-3 III тур 8 мая 2013 г. 1. Ветераны футбола - Средний 4-2 22 мая 2013 г. 2. АСХК - Круглолесское (зап. поле) 3. Саблинское- Ал. ДЮСШ (ос.поле) 8 мая 2013 г. 4. Калиновское - Новокавказский 0-9 </p> <script> var a=document.getElementsByTagName('p')[0].innerHTML; a=a.replace(/^\s*?\n+\s*|\s*?\n\s*$/img,'').split(/\s*\n\s*/).join('\n'); //a=a.replace(/(\n\s*\n)|(\n)/img,'<br>'); reg0=/[IVX]+\s*тур/img; reg1=/\d+\s*[а-я]+\s*\d*\s*г\./img; reg2=/\d+\.\s(.+)\s\-\s(.*?)\s{2,}(\d\-\d|[а-я]+)/img; b=a.replace(reg2,'$1,$2,$3').replace(/(\d)\-(\d)/img,'$1,$2'); b=b.split(/\n/); //.join('<br>'); for (var i=0; i<b.length; i++) { if(b[i].indexOf(',')>0){ document.write(b[i]+'<br>'); } else if(/[IVX]+\s*тур/.test(b[i])){ document.write(b[i]+'<br>'); } else if(/\d+\s*[а-я]+\s*\d*\s*г/.test(b[i])){ document.write(b[i]+'<br>'); } else{ document.write('<span style="color: #FF0000;">' + b[i] + '</span>'+'<br>'); } } document.write('<br>'); document.write('<br>'); b=b.join('<br>'); c=b.split(reg0).join(',');//Удаляем "тур" c=c.split(reg1).join(',');//Удаляем "дата" c=c.split('<br>'); d=[];//Удаляем "запятые" for (var i=0; i<c.length; i++) { if(c[i]!=',') { d.push(c[i]) }} for (var i=0; i<d.length; i++) { d[i]=d[i].split(',',2); } /* e=[]; function zap(c){ return c!=','; } e=c.filter(zap); document.write(e); */ function unique(arr) { var obj = {}; for(var i=0; i<arr.length; i++) { for(var j=0; j<arr.length; j++) { var str = arr[i][j]; obj[str] = true; // запомнить строку в виде свойства объекта }} return Object.keys(obj); // или собрать ключи перебором для IE<9 } k=unique(d); for (var i=0; i<k.length; i++) { document.write(i+1+". "+k[i]+'<br>'); console.log(i+1+". "+k[i]+'<br>'); } </script> </body> </html> Просто убивает: a=a.replace(/^\s*?\n+\s*|\s*?\n\s*$/img,'').split(/\s*\n\s*/).join('\n'); Ruslan_xDD-А чем pre не угодил? http://javascript.ru/forum/misc/4541...-ne-tak-2.html Мне,просто очень нужно поменять reg0 c reg0=/[IVX]+\s*тур/img; на reg0=/^.*тур.*$/; да и reg1 тоже менять нужно... С <pre> лучше сделать? |
dima***,
Нарисуй входной массив и выходнойЮ дабы не втыкать что нужно |
Deff!
Да, всё отлично работает ,всё так и должно быть.Просто нужно улучшить код. http://www.ffsk.ru/articler.php?id=857 http://www.ffsk.ru/articler.php?id=893 и ещё много-много вариантов Вот ссылки из этого нужно сделать одну программу,типа как у меня. p.s.Красным выходит ,что не отфильтровалось,потому что единую программу составить нереально. Вообщем,программа меня полностью устраивает только доделть чуть-чуть нужно. |
dima***,
Поясни лучше на примерах, ибо вникать в столь длинную регулярку не айс(или забей) |
Вообщем,нужно сделать многострочный режим.
Получили текст: var a=document.getElementsByTagName('p')[0].innerHTML; или var a=document.getElementsByTagName('pre')[0].innerHTML; или ещё как-то, а дальше нужно,чтобы можно было к ней применить начало и конец строки(^ и $),т.е. сделать многострочной. Каким образом создать многострочную строку? |
Цитата:
|
<html> <head> <title>Документ без названия</title> <meta charset="utf-8"> </head> <body> <p style ='display:none'> I тур 26 апреля 2013 г. 1. Круглолесское - Средний перенос 27 апреля 2013 г. 2. Ветераны футбола - Саблинское на КДК 3. Новокавказский - АСХК 3-0 26 апреля 2013 г. 4. Ал. ДЮСШ - Калиновское 7-2 II тур 3 мая 2013 г. 1. Средний - Калиновское 4-1 2. Новокавказский - Ал. ДЮСШ 4-4 3. АСХК - Саблинское 4-8 4. Круглолесское - Ветераны футбола 0-3 III тур 8 мая 2013 г. 1. Ветераны футбола - Средний 4-2 22 мая 2013 г. 2. АСХК - Круглолесское (зап. поле) 3. Саблинское- Ал. ДЮСШ (ос.поле) 8 мая 2013 г. 4. Калиновское - Новокавказский 0-9 </p> <script> var a=document.getElementsByTagName('p')[0].innerHTML; document.write(a); </script> </body> </html> Так мы получили строку,она не является многострочной или является??? |
Цитата:
- Ты являешся многочеловечным человеком? |
<html> <head> <title>Документ без названия</title> <meta charset="utf-8"> </head> <body> <p style ='display:none'> I тур 26 апреля 2013 г. 1. Круглолесское - Средний перенос 27 апреля 2013 г. 2. Ветераны футбола - Саблинское на КДК 3. Новокавказский - АСХК 3-0 26 апреля 2013 г. 4. Ал. ДЮСШ - Калиновское 7-2 II тур 3 мая 2013 г. 1. Средний - Калиновское 4-1 2. Новокавказский - Ал. ДЮСШ 4-4 3. АСХК - Саблинское 4-8 4. Круглолесское - Ветераны футбола 0-3 III тур 8 мая 2013 г. 1. Ветераны футбола - Средний 4-2 22 мая 2013 г. 2. АСХК - Круглолесское (зап. поле) 3. Саблинское- Ал. ДЮСШ (ос.поле) 8 мая 2013 г. 4. Калиновское - Новокавказский 0-9 </p> <script> var a=document.getElementsByTagName('p')[0].innerHTML document.write(a.replace(/\n/gim,'<br/>')); //Или document.write('<pre>'+a+'</pre>'); //Или document.write('<span style="display:block">'+a.split('\n').join('</span><span style="display:block">')+'</span>'); </script> </body> </html> Cтрока уже многострочная, но в HTML перевод строки осуществляется через <br/> либо обувание в теги <pre> либо одевание каждой строки в блочный тег, к примеру в <span style="display:block"> |
Цитата:
Есть же <div> )) Кстати: <style> body{ white-space: pre; } </style> <script> var string = 'abc\ncde'; document.write(string); </script> |
Часовой пояс GMT +3, время: 03:31. |