Что нового

как составить шаблон для StringRegExpReplace?

Статус
Закрыто для дальнейших ответов.

norkotik

Новичок
Сообщения
9
Репутация
0
Кто сможет подсказать алгоритм как составлять шаблоны с рег. выражениями для функции StringRegExpReplace, когда нужно обрезать текст в строке с двух сторон (или вытащить текст другими словами), если текст обозначен одинаковыми знаками (или парными) вначале и в конце. например:
1. "наш текст" какое нить описание
2. ля-ля-ля (наш текст) бла-бла-бла..
3. <X>наш текст</X>
Поискав на форуме нашел только конкретные решения для определенных задач. а хотелось бы чтоб обьяснили сам алгоритм.
 
Автор
N

norkotik

Новичок
Сообщения
9
Репутация
0
Просто я щас делаю так
$a = StringRegExpReplace (StringRegExpReplace ( $[исходный текст], '(шаблон1)', ""), '(шаблон2)', "")
MsgBox(0,"наш-текст: ",$a)
шаблон1 - шаблон для замены слева от текста
шаблон2 - шаблон для замены справа от текста
но ведь есть наверное какой нить более легкий путь?
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
norkotik
читай справку, что тут еще можно сказать. рег. выражения, как никакие другие средства, чувствительны к конкретной задаче. на определенном кол-ве практических задач придет и понимание.
 

AZJIO

Меценат
Меценат
Сообщения
2,892
Репутация
1,196
norkotik
Попробуй шаблон (?i)(".+?"|\(.+?\)|<X>.+?<X>) захватывает с тегами, но я думаю что пример выше надуманный, и не стал усложнять. Рекомендуется именно указывать конкретные параметры, нет такого регулярного выражения чтоб одно на все случаи жизни. Там постоянно баланс между допустимым и недопустимым захватом, подпадающим под захват и неподпадающим.
 
Автор
N

norkotik

Новичок
Сообщения
9
Репутация
0
Первоначально я хотел увидеть, алгоритм (рекомендации) по составлению шаблона, а не конкретное решение для конкретной задачи, который помог бы начинающим писателям в составлении шаблона уже для конкретной задачи.

P.S. нужно именно как раз без тегов, что только сам текст выхватить
 
Автор
N

norkotik

Новичок
Сообщения
9
Репутация
0
Спс, это как я понимаю пользовательская функция, да?
она существенно упрощает многие задачи.
но это конкретное решение, а хотелось бы научиться самому составлять шаблоны.
на форуме много почти одинаковых тем типа "как вытащить текст 'bbb' из фразы 'aaabbbccc'?",
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
norkotik
Код:
$sString_1 = '"наш текст" какое нить описание'
$sStart_1 = '"'
$sEnd_1 = '"'
$sPattern_1 = '(?s).*?' & $sStart_1 & '(.*?)' & $sEnd_1 & '\s?.*'
$sSearchString_1 = StringRegExpReplace($sString_1, $sPattern_1, '\1')
MsgBox(64, '1-' & @extended, $sSearchString_1)

$sString_2 = 'ля-ля-ля (наш текст) бла-бла-бла..'
$sStart_2 = '\('
$sEnd_2 = '\)'
$sPattern_2 = '(?s).*?' & $sStart_2 & '(.*?)' & $sEnd_2 & '\s?.*'
$sSearchString_2 = StringRegExpReplace($sString_2, $sPattern_2, '\1')
MsgBox(64, '2-' & @extended, $sSearchString_2)

$sString_3 = '<X>наш текст</X>'
$sStart_3 = '>'
$sEnd_3 = '</'
$sPattern_3 = '(?s).*?' & $sStart_3 & '(.*?)' & $sEnd_3 & '?.*'
$sSearchString_3 = StringRegExpReplace($sString_3, $sPattern_3, '\1')
MsgBox(64, '3-' & @extended, $sSearchString_3)
Но все равно это не универсально, с другим текстом могут быть ошибки.
 
Статус
Закрыто для дальнейших ответов.
Верх