Что нового

StringRegExp. Как поймать первое совпадение?

Suppir

Продвинутый
Сообщения
967
Репутация
62
Текст имеет вид (это одна строка, разбитая @CRLF)

"а = 111
b : 222
с - 333"

при этом положение а, b и с может быть любым. Например:

"b : 222
с - 333
а = 111"

Мне необходимо поймать цифровой атрибут самой верхней из букв.

Я пишу:

StringRegExp($Text, "a = (\d+)|c - (\d+)|a = (\d+)", 1)

По идее это регулярное выражение должно поймать любую из строк: а, б или с. Каким образом получить переменную, содержающую атрибут первой (верхней) из строк?




Добавлено:
Сообщение автоматически объединено:

Решис с помощью следующего кода:

Код:
$Matches = StringRegExp(WinGetText(""), "а = (\d+)|b : (\d+)|c - (\d+)", 1)
	For $x = 0 to UBound($Matches)-1
		If $Matches[$x] <> "" Then
			$Topic = $Matches[$x]	
			ExitLoop
		EndIf
	Next
EndIf
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
А если так ?
Код:
$sStr1="а = 111" & @CRLF & "b : 222" & @CRLF & "с -  333"
$sStr2="b : 222" & @CRLF & "с -  333" & @CRLF & "а = 111"
$sPattern='(?s)^\D+(\d+)\r.*$'
$sResult1 =StringRegExpReplace($sStr1,$sPattern ,'\1')
ConsoleWrite($sResult1 & @CRLF)
$sResult2 =StringRegExpReplace($sStr2,$sPattern,'\1')
ConsoleWrite($sResult2 & @CRLF)
 
Автор
S

Suppir

Продвинутый
Сообщения
967
Репутация
62
Наверное, так тоже заработает. Т.е. мы присваиваем переменной значение из первого совпадения. Правда, в реальной задаче гораздо более сложные паттерны, я упрощенно записал, для примера.
 
Верх