Что нового

Поиск строки с игнорированием некоторых значений

ckret

Новичок
Сообщения
44
Репутация
0
Здравствуйте!
Покажите пожалуйста на примере, как правильно составить регулярное выражение для поиска строки "Вам, Анастасии Райк и еще 1 553 это понравилось.", чтобы не учитывались возможные фамилии и количество "Вам, ХХХХХ и еще ХХХХ это понравилось." Спасибо!
 

edyapd

Осваивающий
Сообщения
380
Репутация
30
Если я правильно понял, то
Код:
#include <array.au3>
$str = 'Вам, Анастасии Райк и еще 1 553 это понравилось.'
$pattern = 'Вам, .*? и еще [ \d]+? это понравилось.'
$aOut = StringRegExp($str, $pattern, 3)
_ArrayDisplay($aOut)
 
Автор
C

ckret

Новичок
Сообщения
44
Репутация
0
Чтобы можно было использовать с StringInStr("Полный текст", "Вам, Анастасии Райк и еще 1 553 это понравилось.") > 0
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
ckret

StringInStr тут зачем?
Код:
#Include <Array.au3>

Local $aRes = StringRegExp( _
	'~TEXT~ Вам, Анастасии Райк и еще 1 553 это понравилось. ~TEXT~', _
	'Вам, (.+?) и еще ([ \d]+) это понравилось\.', _
	3 )
If IsArray( $aRes ) Then _ ;Найдено
	ConsoleWrite( "Found " & $aRes[0] & " " & $aRes[1] & @CRLF)
 
Автор
C

ckret

Новичок
Сообщения
44
Репутация
0
Скорее всего по неопытности... До настоящего времени всегда использовал такую конструкцию для поиска наличия текста в коде. Буду пробовать теперь работать с StringRegExp вместо StringInStr. Спасибо!
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Код:
If StringInStr($text, "это понравилось.") Then ; Можно так, но могут быть неточности
 

edyapd

Осваивающий
Сообщения
380
Репутация
30
firex, я не большой знаток регулярок, но вместо (.+) написал бы (.+?).
К примеру
Код:
Local $aRes = StringRegExp( _
    '~TEXT~ Вам, Анастасии Райк и еще 1 553 это понравилось. ~TEXT~' & _
		'Вам, Вася Пупкин и еще 10 это понравилось.', _
    'Вам, (.+?) и еще ([ \d]+) это понравилось\.', _
    3 )
уже не прокатывает
 
Верх