Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Ни дня без регулярки (https://javascript.ru/forum/misc/71287-ni-dnya-bez-regulyarki.html)

рони 11.11.2017 00:20

Цитата:

Сообщение от Lion777
Есть получше вариант ?

Alexandroppolus, пост № 23
var str = "Включить воду свет выключить воду выключить включить свет";
var reg = /(включить|выключить)(?:.(?!включить|выключить))+/gim ;
var values = str.match(reg);
alert(values.join('\n'));

рони 11.11.2017 00:27

Цитата:

Сообщение от Lion777
Я вообщем из разбора ваших примеров решил так
/(?:включить|выключить)(?:.(?!вк лючить|выключить))+/gim

чем не устроил этот вариант?

Lion777 11.11.2017 02:27

Цитата:

Сообщение от рони (Сообщение 469770)
чем не устроил этот вариант?

Я так смотрю, это, наверное, самый оптимальный вариант, тут меньше всего идет проверок...

Lion777 22.11.2017 22:47

есть массив строк

var arrData =
[
"Частота вращения шпинделей (об/мин) 6000",
"Давление, в пневмосистеме, Атм. 6",
"Частота вращения шпинделей (мин) 6000"
];

надо строки разбить, на такие подстроки
"Частота вращения шпинделей" "об/мин" "6000"
"Давление, в пневмосистеме" "Атм." "6"
это тип данные отформатировать для таблицы

var reg = /(.+)(?:\s\((.+)\))|(?:,\s(.+))\s+(\d+)$/; // если так /(.+)(?:\s\((.+)\)|,\s(.+))\s+(\d+)$/ то что-то похожее, но не то получается, одна маска undefined

var arrData = 
[
 "Частота вращения шпинделей (об/мин) 6000",
 "Давление, в пневмосистеме, Атм. 6",
 "Частота вращения шпинделей (мин) 6000"
];

var res = arrData[1].match(reg);

рони 22.11.2017 23:18

Lion777,
<script>
var reg = /^(.*)\s+\(?([^()]+)\)?\s+(\S+)/;

var arrData =
[
 "Частота вращения шпинделей (об/мин) 6000",
 "Давление, в пневмосистеме, Атм. 6",
 "Частота вращения шпинделей (мин) 6000"
];

var res = arrData.map(function(a) {
   return a.match(reg).slice(1)
});
document.write(JSON.stringify(res))
  </script>

Lion777 23.11.2017 01:04

Пасиб рони ), чет игрался регулярками, вроде все логично, на мой взгляд )), а не катит...
Еще вопрос, запятую надо тоже убрать
Давление, в пневмосистеме,
чет думал сделать так "(.*),?\s+" , а оно не катит )

рони 23.11.2017 01:16

Lion777,
<script>
var reg = /^(.*[^,])[,\s]+\(?([^()]+)\)?\s+(\S+)/;

var arrData =
[
 "Частота вращения шпинделей (об/мин) 6000",
 "Давление, в пневмосистеме, Атм. 6",
 "Частота вращения шпинделей (мин) 6000"
];

var res = arrData.map(function(a) {
   return a.match(reg).slice(1)
});
document.write(JSON.stringify(res))
  </script>

рони 23.11.2017 01:40

Lion777,
<script>
var reg = /^(.*[^,\s])[,\s(]+([^()]+)[)\s]+(\S+)/;

var arrData =
[
 "Частота вращения шпинделей (об/мин) 6000",
 "Давление, в пневмосистеме, Атм. 6",
 "Частота вращения шпинделей (мин) 6000"
];

var res = arrData.map(function(a) {
   return a.match(reg).slice(1)
});
document.write(JSON.stringify(res))
  </script>

Lion777 23.11.2017 01:43

Пасиб, чет полностью логику догнать в этих регулярках непросто )), вроде верно пишу, а оно )))... все не то, хоть рядом ))


Часовой пояс GMT +3, время: 13:58.