Что нового

Значение до круглых скобок

Rjevsky

Новичок
Сообщения
102
Репутация
4
Нужно получить значение до первых круглых скобок в строке типа: Карточка Зеленая(2)(sddfsdf)ergre
Если в строке скобки отсутствуют, то возвращать строку без изменений
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Rjevsky,
Попробуйте так.
Код:
$sString = 'Карточка Зеленая(2)(sddfsdf)ergre'

$sString = StringRegExpReplace($sString, '^([^()]+?)\(.*', '$1')
ConsoleWrite($sString & @LF)
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
Вариант :
Код:
$sString=StringRegExpReplace( $sString, '\(.+', '' )
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Можно без регулярных выражений, ведь функция StringInStr возвращает позицию найденой подстроки слева. :IL_AutoIt_1:
Код:
$sString = 'Карточка Зеленая(2)(sddfsdf)ergre'
ConsoleWrite(StringLeft($sString,StringInStr($sString,'(') - 1) & @LF)
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,486
inververs [?]
Можно без регулярных выражений
А что если строка содержит одну скобку в начале (закрывающую)?
Код:
Карточка ) Зеленая(2)(sddfsdf)ergre

Вот вариант который предусматривает это:
Код:
$sString = 'Карточка )Зеленая(2)(sddfsdf)ergre'

$aRet = StringRegExp($sString, '(^.*?(?=\([^()]+\)).*?)', 3)
ConsoleWrite($aRet[0] & @LF)


ну или так для замены:
Код:
$sString = 'Карточка ) Зеленая(2)(sddfsdf)ergre'

$sString = StringRegExpReplace($sString, '(^.+?)(?=\([^()]+\)).+', '$1')
ConsoleWrite($sString & @LF)
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
CreatoR
Последний вариант видимо уже на все случаи жизни. :IL_AutoIt_1:
 
Автор
R

Rjevsky

Новичок
Сообщения
102
Репутация
4
Спасибо, кто помог. А если задачу переформулировать - получить результат до последних скобок, которые находятся перед расширением: орслыво(пррав)лыовлыо (2)ролыв(10).doc
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,486
Rjevsky [?]
получить результат до последних скобок, которые находятся перед расширением
Код:
StringRegExpReplace($sString, '\([^)]+\)\.[^\.]+$', '')
 
Верх