Что нового

Многострочный текст

Крепыш

Новичок
Сообщения
105
Репутация
2
Из многострочного текста нужно выбрать только те строки, которые содержат определённые символы: цифры, дефис, точка, запятая
Не пойму, почему запрос
Код:
Local $aResult = StringRegExp('Date,Time\n10,10\n11,11', '([\d\.,-]+)\R*', 3)
  If @error Then Return
  For $i = 0 to UBound($aResult)-1
    ConsoleWrite($aResult[$i] & @CRLF)
  Next

захватывает запятую из первой строки:
 
Автор
К

Крепыш

Новичок
Сообщения
105
Репутация
2
inververs сказал(а):
шаблон в квадратных скобках работает как ИЛИ.
Это-то понятно.

Этот шаблон '([\d\.,-]+)\R*' я читаю, как:
Любой символ из перечисленных в квадратных скобках, повторённый один или более раз, и сразу за этой группой - любой из символов переноса строки.
Строка "Date,Time\n" не удовлетворяет этому условию, т.к. после запятой идёт буква "T" - не символ переноса строки.
 
A

Alofa

Гость
Крепыш вы забыли расказать про звездочку (*).
 
Автор
К

Крепыш

Новичок
Сообщения
105
Репутация
2
Код:
StringRegExp('Date,Time\n10,10\n11,11', '([\d\.,-]+)\R+', 3)

Этот шаблон вообще не работает. Что я не так делаю?
 
Автор
К

Крепыш

Новичок
Сообщения
105
Репутация
2
inververs,
Точно! В AutoIt же перенос строки по-другому. Спасибо.
Вот так работает:
Код:
Local $aResult = StringRegExp('Date,Time' & @CRLF & '10,10' & @CRLF & '11,11', '(?m)^([\d\.,-]+)$', 3)
If @error Then Exit
For $i = 0 to UBound($aResult)-1
  ConsoleWrite($aResult[$i] & @CRLF)
Next
 
Верх