Что нового

Как получить число внутри квадратных скобок с дополнительным условием...

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Есть элемент структуры (без кавычек):

"byte[4]"

Как получить число внутри "[]", в данном случае 4, с помощью StringRegExpReplace()? Но есть одно условие: если этх кавычек нет, например "byte", то функция должна возвратить пустую строку, если есть, то число.
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
Так сайдёт ?:
Код:
$string = 'byte[4]'
$Reg = StringRegExp($string, '\[(.*?)\]', 3)
If Not @error Then
	MsgBox(0, '', $Reg[0])
Else
	MsgBox(0, '', '0')
EndIf
 
Автор
Yashied

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Мне нужно через StringRegExpReplace().
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
Вот:
Код:
$string = 'byte[4]'
$Reg = StringRegExpReplace($string, '[^\d]', '')
MsgBox(0, '', $Reg)
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
Не уверен,что правильно понял условие, но
может быть это :
Код:
$sPattern = '[^[]+\[?(\d*)\]?'
$sRezult = StringRegExpReplace ( $sText ,$sPattern,'\1' )
 
Автор
Yashied

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Zaramot

Спасибо, но это не будет работать в следующей ситуации (хотя, конечно, я об этом забыл сказать):

Код:
ConsoleWrite(StringRegExpReplace('Reserved1[5]', '[^\d]', '') & @CR)


gregaz

Спасибо, все работает.
 
Верх