Что нового

[RegExp] Извлечение из строк [<version="1.0.0.0">]

just_for_lulz

Новичок
Сообщения
2
Репутация
0
Нужно из строки:

<application="QWERTY" version="1.0.0.0" company="Bidlo-Soft" description="only for idiots">

извлечь определённые параметры типа: "version" должен возвращать "1.0.0.0"
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
just_for_lulz
Попробуйте так:
Код:
$sString = '<application="QWERTY" version="1.0.0.0" company="Bidlo-Soft" description="only for idiots">'
$sParametr = 'version'
;$sPattern = '(?s).*?\Q' & $sParametr & '="\E(.*?)\Q"\E.*'
$sPattern = '(?s).*?' & $sParametr & '="(.*?)".*'
$sResult = StringRegExpReplace($sString, $sPattern, '\1')
MsgBox(0, $sParametr, $sResult)

*click*
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
madmasles
Второе вхождение «\Q\E» там лишнее, оно отменяет спец. символы, а кавычки, как и знак равно, такими не являются ;)
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
По моему не стоит злоупотреблять : \Q и \E .
1 их пару можно употребить ,если в $sParametr возможно присутствие спецсимволов.
2-я их пара совсем никчему : Какие спецсимволы в фрагменте : " ?

Для данного текста достаточно выражения :
Код:
$sResult = StringRegExpReplace($sString, '(?s).*version="([^"]*)".*', '\1')




;=================
Ха,опоздал :smile:
just_for_lulz [?]
Нужно из строки:

Кстати если для 1-й строки ,то и без (?s) можно обойтись
 
Автор
J

just_for_lulz

Новичок
Сообщения
2
Репутация
0
Ну вообще-то в этой строке и параметры, а возможно и значения параметров, будут иметь спец. символы, вышеупомянутая строка лишь для примера! Так что лучше всё учесть
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
just_for_lulz сказал(а):
Ну вообще-то в этой строке и параметры, а возможно и значения параметров, будут иметь спец. символы, вышеупомянутая строка лишь для примера! Так что лучше всё учесть

Для значений параметров никаких спец. мер не надо предпринимать , только для $sParametr,если необходимо.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
OffTopic:
gregaz [?]
Так, мне придётся насильно всем включить опцию отображения предупреждения при отправке сообщения в обновлённую тему...
 
Верх