Автор Тема: Считать выражение от отметки и в диапозоне строки выписать элементы в массив  (Прочитано 157 раз)

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

Оффлайн MaxHex [?]

  • Новичок
  • *
  • Сообщений: 1
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Здравствуйте, никак не могу разобраться с регулярными выражениями, есть текстовый фаил (во вложении), там меня интересуют строки после "Data MPS", а именно: значение "FID" и название, которое всегда идет после символа ">" и до конца строки. Количество запятых может отличаться (но они всегда есть), значение PID может быть разное, неизменные значения это "L:", всегда после первой запятой будет "FID" и его значение (тоже может быть разное по количеству символов) и всегда после символа ">" будет название (до конца строки). Мне надо это все вытащить в массив и в каждой строке массива что бы было примерно так: "FID 1412 HXRU001R-Russian Inland Waterways v2015.0". Никак не могу понять как составить такое выражение((((


Внимание: Для просмотра прикреплённых файлов необходимо Войти или Зарегистрироваться

Русское сообщество AutoIt


Онлайн sngr [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 894
  • Репутация: 360
    • Награды
  • Версия AutoIt: 3.3.8.1
Код: AutoIt [Выделить]
$file=FileRead("C:\Documents and Settings\12\Рабочий стол\temp.txt")
$str=StringRegExp($file,'FID\s+(\d+)[^\r\n]+>([^\r\n]+)',3)
$aa=''
For $i = 0 To UBound($str)-1 Step 2
    $aa&=$str[$i]&' '&$str[$i+1]& @CRLF
Next
MsgBox(32,'',$aa)


Помечен как лучший ответ пользователем MaxHex Отправлен Ноябрь 22, 2018, 13:07:16

Оффлайн Alofa [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1445
  • Репутация: 216
  • Пол: Мужской
  • Windows 7 /10 [x64]
    • Награды
  • Версия AutoIt: 3.3.12.0
Код: AutoIt [Выделить]
#include <Array.au3>
Global $aArray[0]
$sText = FileRead('temp.txt')
If @error Then Exit

StringRegExp($sText, 'Data MPS', 1)
$aArr = StringRegExp($sText, '\R\h*?L:.+(FID\h\d+),[^>]+>(.+)', 3, @extended)
For $i = 0 To UBound($aArr) - 1 Step 2
    ReDim $aArray[$i / 2 + 1]
    $aArray[$i / 2] = $aArr[$i] & ' ' & $aArr[$i + 1]
Next
_ArrayDisplay($aArray)


Русское сообщество AutoIt


 

Похожие темы

  Тема / Автор Ответов Последний ответ
3 Ответов
4435 Просмотров
Последний ответ Октябрь 05, 2009, 01:43:54
от Yashied
1 Ответов
3005 Просмотров
Последний ответ Май 24, 2010, 08:49:57
от CreatoR
5 Ответов
4276 Просмотров
Последний ответ Ноябрь 14, 2010, 09:03:17
от deeman313
2 Ответов
2371 Просмотров
Последний ответ Май 23, 2012, 09:58:04
от Talany
10 Ответов
5152 Просмотров
Последний ответ Сентябрь 28, 2012, 18:43:22
от ArtInt
4 Ответов
2631 Просмотров
Последний ответ Сентябрь 15, 2013, 12:06:28
от Garrett
5 Ответов
2141 Просмотров
Последний ответ Май 30, 2015, 17:41:51
от CreatoR
9 Ответов
3292 Просмотров
Последний ответ Октябрь 10, 2015, 12:32:37
от Medic84
2 Ответов
883 Просмотров
Последний ответ Сентябрь 11, 2016, 08:55:29
от DezmontDeXa
4 Ответов
535 Просмотров
Последний ответ Ноябрь 14, 2017, 18:43:58
от boomerang69