Что нового

как составить шаблон для 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
Репутация
622
norkotik
читай справку, что тут еще можно сказать. рег. выражения, как никакие другие средства, чувствительны к конкретной задаче. на определенном кол-ве практических задач придет и понимание.
 

AZJIO

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

norkotik

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

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

norkotik

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

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 319
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)
Но все равно это не универсально, с другим текстом могут быть ошибки.
 
Статус
Закрыто для дальнейших ответов.
Верх