Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.03.2014, 20:23
Профессор
Отправить личное сообщение для dima*** Посмотреть профиль Найти все сообщения от dima***
 
Регистрация: 13.12.2012
Сообщений: 283

помогите с регуляркой
Программа


<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 не угодил?
Что делаю не так?


Мне,просто очень нужно поменять reg0 c reg0=/[IVX]+\s*тур/img;
на reg0=/^.*тур.*$/;
да и reg1 тоже менять нужно...

С <pre> лучше сделать?

Последний раз редактировалось dima***, 04.03.2014 в 20:53.
Ответить с цитированием
  #2 (permalink)  
Старый 04.03.2014, 22:27
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

dima***,
Нарисуй входной массив и выходнойЮ дабы не втыкать что нужно
Ответить с цитированием
  #3 (permalink)  
Старый 04.03.2014, 22:49
Профессор
Отправить личное сообщение для dima*** Посмотреть профиль Найти все сообщения от dima***
 
Регистрация: 13.12.2012
Сообщений: 283

Deff!
Да, всё отлично работает ,всё так и должно быть.Просто нужно улучшить код.
http://www.ffsk.ru/articler.php?id=857
http://www.ffsk.ru/articler.php?id=893
и ещё много-много вариантов
Вот ссылки из этого нужно сделать одну программу,типа как у меня.
p.s.Красным выходит ,что не отфильтровалось,потому что единую программу составить нереально.
Вообщем,программа меня полностью устраивает только доделть чуть-чуть нужно.
Ответить с цитированием
  #4 (permalink)  
Старый 04.03.2014, 23:36
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

dima***,
Поясни лучше на примерах, ибо вникать в столь длинную регулярку не айс(или забей)
Ответить с цитированием
  #5 (permalink)  
Старый 05.03.2014, 09:23
Профессор
Отправить личное сообщение для dima*** Посмотреть профиль Найти все сообщения от dima***
 
Регистрация: 13.12.2012
Сообщений: 283

Вообщем,нужно сделать многострочный режим.

Получили текст:
var a=document.getElementsByTagName('p')[0].innerHTML;
или
var a=document.getElementsByTagName('pre')[0].innerHTML;
или ещё как-то,

а дальше нужно,чтобы можно было к ней применить начало и конец строки(^ и $),т.е. сделать многострочной.

Каким образом создать многострочную строку?
Ответить с цитированием
  #6 (permalink)  
Старый 05.03.2014, 09:37
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от dima***
Каким образом создать многострочную строку?
Это как понять?
Ответить с цитированием
  #7 (permalink)  
Старый 05.03.2014, 09:42
Профессор
Отправить личное сообщение для dima*** Посмотреть профиль Найти все сообщения от dima***
 
Регистрация: 13.12.2012
Сообщений: 283

<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>


Так мы получили строку,она не является многострочной или является???
Ответить с цитированием
  #8 (permalink)  
Старый 05.03.2014, 09:46
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от dima***
Так мы получили строку,она не является многострочной или является?
Встречный вопрос...
- Ты являешся многочеловечным человеком?
Ответить с цитированием
  #9 (permalink)  
Старый 05.03.2014, 13:59
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

<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">

Последний раз редактировалось Deff, 05.03.2014 в 14:04.
Ответить с цитированием
  #10 (permalink)  
Старый 05.03.2014, 14:10
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от Deff
блочный тег, к примеру в <span style="display:block">
Ну помоему только воспаленный мозг придумает такой нелепый пример ))
Есть же <div> ))

Кстати:

<style>
    body{
        white-space: pre;
    }
</style>
<script>
var string = 'abc\ncde';
document.write(string);
</script>
__________________
В личку только с интересными предложениями
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите разобраться с регуляркой shtormIK Общие вопросы Javascript 6 26.06.2012 20:02
Помогите плз с регуляркой zsaz jQuery 1 25.05.2012 18:41
помогите с регуляркой ... motoroller Элементы интерфейса 1 23.11.2009 22:01
помогите с регуляркой Holod Общие вопросы Javascript 1 19.08.2009 12:02
Помогите с регуляркой... alexKniaz AJAX и COMET 0 03.11.2008 01:16