2014-10-07 2 views
0

Я пытаюсь написать регулярное выражение, просто чтобы удалить HTML тегов но, к сожалению, я удалить тега и содержание этого тега, это называется жадное регулярное выражение.ленивые и жадные регулярные выражения

, например

, если у меня есть этот тег

<div> HELLO </div> 

используя мое регулярное выражение, которое я удалить Div тег (ДИВ), и я удалить содержимое этого тега например (ПРИВЕТ) слово.

так пожалуйста, как написать ленивое регулярное выражение только для удаления тега без удаления содержимого этого тега.

+2

Теги? Вам нужно будет дать еще какой-то контекст. В его нынешнем виде я понятия не имею, о чем вы говорите. –

+1

На каком языке вы используете? Если вы используете PHP, у него уже есть функция 'strip_tags()', вам не нужно регулярное выражение. – Barmar

+0

@Barmar Нет Я использую C# – Moh

ответ

0

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

<.*?> 

соответствует одному тегу. Следующее, значение regex:

  • < соответствует буквам < буквально.
  • . соответствует любому символу, кроме новой строки.
  • *? квантификатор между нулем и неограниченным временем, как можно несколько раз, расширяя по мере необходимости. Ленивый и не жадный. Это означает, что оно соответствует нескольким символам.
  • > соответствует буквам> буквально.

Теперь выполнение немного зависит от используемого языка.


, например, в PHP вы могли бы сделать что-то вроде:

$re = "/(<.*?>)/"; 
$str = "<p id=\"test\">This is a simple test</p>"; 

echo preg_replace($re, "", $str); 

Проверить эту ссылку demo, чтобы увидеть рабочий пример.


А в JavaScript, вы можете сделать что-то вроде:

var re = "<.*?>"; 
var str = '<p id="test">This is a simple test</p>'; 

alert(str.replace(new RegExp(re,"gm"), "")); 

Проверьте ссылку demo, чтобы увидеть рабочий пример.

Надеюсь, это полезно!

0

Вы должны использовать ungreedy регулярное выражение, например:

< [^>]+> 

.+ будет принимать каждые символы оно может, имея в виду все.

0
<[^>]*> 

Это должно удалить все теги, включая закрывающие метки.

Смежные вопросы