Что нового

Достать имя компьютера из строки текста

minimen456

Новичок
Сообщения
34
Репутация
0
Помогите, пожалуйста, составить регулярное выражение! Есть строчки вида:
Incident INC000005101105 has been assigned to you. Priority: . Description: SMZ \ smz1878d \ Out of Date Definitions
Incident INC000005101497 has been assigned to you. Priority: . Description: SMZ \ SMZ2237D \ Autoprotect Off
Incident INC000005101500 has been assigned to you. Priority: . Description: SMZ \ SMZ-LMNPY70-DB \ Out of Date
и т.д
Нужно достать имя компьютера, которое между слешами: smz1878d, SMZ2237D, SMZ-LMNPY70-DB
 

sngr

AutoIT Гуру
Сообщения
1,010
Репутация
408
Код:
#include 'array.au3'
$file="Incident INC000005101105 has been assigned to you. Priority: . Description: SMZ \ smz1878d \ Out of Date Definitions" & _
"Incident INC000005101497 has been assigned to you. Priority: . Description: SMZ \ SMZ2237D \ Autoprotect Off"
$str=StringRegExp($file,'SMZ\s+\\\s+(.*?)\s+\\',3)
_ArrayDisplay($str)
 

AZJIO

Меценат
Меценат
Сообщения
2,879
Репутация
1,194
Код:
$sText=StringRegExp($sText, '(?m)Priority: \. Description:.*?\h+\\\h+(.*?)\h+\\', 3)

В чём изменение:
1. Добавил (?m) - обязательно использовать если текст берётся из одной строки, это исключить захват нескольких строк.
2. заменил \s+ на \h+ потому что первый содержит вертикальные пробельные символы, а допускаются только горизонтальные
3. Строка "Priority: \. Description:" - "опорная строка" зависит от того будет ли что в ней менятся, если да то выбирать ту часть которая не меняется, возможно достаточно "Description:"
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
ну или так
Код:
$str=_StringBetween($file,'SMZ \ ',' \ ')
 
Верх