Автор Тема: Регулярные выражения по строкам  (Прочитано 994 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн bean

  • Редкий гость
  • Пол: Мужской
  • Это у вас пончиками пахнет?
Добрый день. Результатом выполнения кода является возврат первой строки, а надо все + массив, что не так в регулярном выражении?
str='1 строка'+ '\n';
str=str+'2 строка'+ '\n';
      var mstr=new Array();
      var reg1=/.+/img;
      mstr=reg1.exec(str);
      for (var i=0; i<mstr.length; i++) {
         document.write(mstr);
      }

Зато 1С короткое название

Оффлайн point212

  • Модераторы
  • *****
  • Пол: Мужской
  • Мосс смотрит на вас...
Re: Регулярные выражения по строкам
« Ответ #1 : 18 Марта 2016, 13:17:19 »
Вы так похабно отнеслись к созданию и оформлению темы, а надеетесь на помощь? Нагло...

Что за язык то? Чтобы хоть глянуть какой там синтаксис регулярок.
Код надо было обернуть в форумный тег.
И желательно оформить отступами нормально.


Давйте я попытаюсь сделать как надо было создать тему:


Язык: JavaScript
Вот код:
str='1 строка'+ '\n';
str=str+'2 строка'+ '\n';

var mstr=new Array();
var reg1=/.+/img;

mstr=reg1.exec(str);

for (var i=0; i<mstr.length; i++) {
         document.write(mstr);
}

Вот так намного лучше.
Теперь вопросы:
var reg1=/.+/img;
Что вот это за фигня? Кавычки просто пропущены?

Где вообще в этом коде хоть одна реглуярка?

Оффлайн bean

  • Редкий гость
  • Пол: Мужской
  • Это у вас пончиками пахнет?
Re: Регулярные выражения по строкам
« Ответ #2 : 18 Марта 2016, 14:17:30 »
Действительно задавал вопрос первый раз. В будущем буду оформлять по стандарту. reg1=/.+/img; это и есть регулярка,  фактически с помощью флагов пытался загрузить строки в элементы массива. Грузится в элемент массива 1 только первая строка, а надо все. Можно, конечно, сделать все через split, но хочется регулярным выражением.
Зато 1С короткое название

Оффлайн DoReMi

  • Админы
  • *****
  • Пол: Мужской
    • БЛОГОДОРЕМИЕ
Re: Регулярные выражения по строкам
« Ответ #3 : 18 Марта 2016, 15:04:58 »
регекспы вроде бы только для поиска одного значения, а не выбора многих в массив, не?
Вы держитесь здесь,  вам всего доброго, хорошего настроения, здоровья. ©

Оффлайн bean

  • Редкий гость
  • Пол: Мужской
  • Это у вас пончиками пахнет?
Re: Регулярные выражения по строкам
« Ответ #4 : 18 Марта 2016, 16:17:53 »
На сайте: http://javascript.ru/basic/regular-expression+ в примере:
var myRe = /d(b+)(d)/ig;
var myArray = myRe.exec("cdbBdbsbz");
говорят, что вернет три элемента массива
Зато 1С короткое название

Оффлайн DoReMi

  • Админы
  • *****
  • Пол: Мужской
    • БЛОГОДОРЕМИЕ
Re: Регулярные выражения по строкам
« Ответ #5 : 18 Марта 2016, 17:18:44 »
Там про круглые скобки ничего не пишут? Я бегло мануал глянул.
Вы держитесь здесь,  вам всего доброго, хорошего настроения, здоровья. ©

Оффлайн point212

  • Модераторы
  • *****
  • Пол: Мужской
  • Мосс смотрит на вас...
Re: Регулярные выражения по строкам
« Ответ #6 : 18 Марта 2016, 21:32:37 »
Хм... а че, в JavaScript можно оформлять регэкспы в стиле Перла? Прям вот так в коде, без кавычек?
Пойду почитаю щас.

Вообще регулярка /.+/ ничего не вернет. Ей можно только проверить на то подходит под нее строка какая-то или нет.
А чтобы что-то регуляркой отобрать нужно заключить места отбора в круглые скобки. Например вот такая регулярочка /(.+)/ отберёт всю исходную строку, если в ней есть хоть один символ.

Оффлайн ZiP

  • Волшебник
  • Пол: Мужской
Re: Регулярные выражения по строкам
« Ответ #7 : 18 Марта 2016, 22:36:05 »
А зачем вы используете спец символ перевода каретки?
= Оказываем аутсорсинговые услуги по разработке ПО любых направлений и администрирования баз данных Oracle, MS SQL. Сопровождение и доработка существующих конфигураций 1С =

Оффлайн bean

  • Редкий гость
  • Пол: Мужской
  • Это у вас пончиками пахнет?
Re: Регулярные выражения по строкам
« Ответ #8 : 19 Марта 2016, 18:21:59 »
Большое спасибо всем за ответы.
Потенциально хочется подключать текстовые файлы, где данные разделены знаками абзаца, что вверху текста добавив var str=" в конце  текста "; и при условии, что в тексте не были использованы кавычки получить готовые данные для обработки. Символ перевода каретки заменил на #, который достаточно редок в российских текстах и задачу используя split на сейчас решил. Но на будущее... 
Теперь по поводу кавычек:
        var reg2=/^\d+/i;
if (reg2.test(mstr[i])) {
htmlText=htmlText+"<br>";
}
работает без проблем. Наверное они в Яваскрипт не нужны в регулярных выражениях.
Зато 1С короткое название