Я использую следующий RegEx для замены строки:
<\/?(span)\b(?:\s+class="highlight")?>
Но у этого регулярного выражения есть недостаток ... Возьмите этот пример кода, например:
<p>
Some text here
<span class="highlight">This is highlighted</span>
<span>This is not highlighted</span>
</p>
Мое регулярное выражение будет соответствовать обоим тегам span, хотя я хочу только один с установленным class = "highlight".Как я могу добиться этого, используя RegEx?
PS: пожалуйста, не говорите мне, что я не должен использовать RegEx для этого, потому что я понижу ваш ответ, поскольку он не по теме.Это вопрос для ребят из RegEx.
РЕДАКТИРОВАТЬ: основываясь на принятом ответе ниже, я использую следующее регулярное выражение для замены. ПРИМЕЧАНИЕ: код в javascript (mootools)
var regex = new RegExp("(<span[^>]+class\\s*=\\s*(\"|')highlight\\2[^>]*>)(.*?)(</span>)",'g');
var replaced = element.get('html').replace(regex, "$3");
element.set('html', replaced);
Приведенное выше регулярное выражение заменит некоторый текст здесь на "некоторый текст здесь" (без двойных кавычек)