Регулярные выражения. Подсветка текста.

Ihorko

Новичок
Регулярные выражения. Подсветка текста.

Помогите пожалуйста с регулярными выражениями.
Необходимо в тексте с HTML тегами заменить все строки "abc" на "<span class='highlighted'>abc</span>", при этом не задеть буквы в тегах. Иначе говоря заменить строку "abc" между ">" и "<" где в строке не встречается ">".
 

hermit_refined

Отшельник
Лично я решал такую задачу путём посимвольного разбора в модуле на C.

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

Ihorko

Новичок
Автор оригинала: hermit_refined
Лично я решал такую задачу путём посимвольного разбора в модуле на C.

При помощи же регулярных выражений - могу подкинуть идею использовать preg_split по тегам с PREG_SPLIT_DELIM_CAPTURE, подсветкой участков вне тегов и последующим implode(). Получится небыстро, но зато точно.
Спасибо, но мне необходимо регулярное выражение, поскольку я пишу не на PHP.
(Зашел сюда, потому что знаю что тут люди шарят в регулярках).
 

Андрейка

Senior pomidor developer
tf
ну раз очень сильно нужно человеку - пусть делает, я лично не возражаю.
а почему ты спросил? или ты думаешь у него мозгов не хватает самому начать писать эту регулярку и задать более конкретный вопрос, если что-то получацца не будет? не, он не такой, он у нас очень способный
 

tf

крылья рулят
Андрейка, он просто не спрашивал разрешения, а ты дал разрешение на то что не спрашивали.
или ты думаешь у него мозгов не хватает самому начать писать эту регулярку
нет, я тут думаю над тем с какой стороны подходить к созданию этого регулярного выражения, что предусматривать, что исключать, чисто теоретический вопрос: как лучше это сделать? как думаеш?

Спасибо, но мне необходимо регулярное выражение, поскольку я пишу не на PHP.
(Зашел сюда, потому что знаю что тут люди шарят в регулярках).
, типо написать тебе все это?
 

Ihorko

Новичок
Думаете я не писал? :)

я написал так:

/>*(abc)*</

но оно не пашет :(
 

avm

Новичок
PHP:
<?php
 $s = "<abc>123abc456</abc>";
 echo preg_replace("/>(.*?)(abc)([^<]*)</",">\\1[[\\2]]\\3<",$s);
?>
-~{}~ 18.10.06 18:10:

результат:
Код:
<abc>123[[abc]]456</abc>
 

Ihorko

Новичок
Ничего не получается :(

Есть текст:
<p>Currently Wikipedia has more than 5 million articles in many languages,
including more than 1.4 million in the
<a href='/wiki/English_Wikipedia' title='English Wikipedia'>English-language version</a>.</p>


Как заменить все буквы "a" на REPLACED


PHP:
/>*(a)*</
не помогает :(
 

avm

Новичок
hermit_refined, я не ставил перед собой задачу удовлетворить любые фантазии, а лишь дал пример соответствующий сабжу. Но я так понимаю автору это не помогло - он продолжает думать что * это wildcard....
Ну да и ладно.
 
Сверху