Регулярное выражение, помогите плиз
Приветсвую, господа,
прошу помощи: необходимо составить регулярное выражение, которое ловит диапазон <p></p> но при условии, если в этом диапазоне (читай в параграфе) отсуствует какое то определенное слово (или иная последовательность символов), ну допустим "петя". Понимаю что надо как то использовать негативное загляядывание вперед, но не соображу как, не получается... что то типа /<p.+?<\/p(?!Петя)/gi спасибо |
Frozen Coyote,
var p = "Sarah Connor";
p.indexOf("John") >= 0 ? alert("John found!") : alert ("No John");
с RegEx
var word = /John/,
p = "Sarah Connor";
word.test(p) ? alert ("John found!") : alert ("No John");
|
наверно я неправильно объяснил, но суть Вашего ответа не совсем уловил. Пример с параграфами для простоты оформил. Есть несколько совпадений по регулярному выражению, Результат1, Результат2, Результат3, например /<\/p>(.+?)<\/p>/gi должен вернуть </p>Результат1</p>, </p>Еще какой то результат</p> и </p>Третий результат</p>, мне нужно задать исключение чтобы к примеру результат содержащий слово "какой то" исключался
|
Frozen Coyote,
Напишите пример обычным предложением, не уверен, что понимаю. Напр.: Строка: "Светлый майский день" при совпадении с /день/ должна возвращать то-то, при не совпадении то-то... |
паттерн /светлый.+?день/ возвращает светлый майский день, светлый июньский день, светлый ноябрьский день. Хотелось бы чтобы при наличии слова "июньский" внутри совпадения, данный результат игнорировался.
спасибо большое |
stupidpendos,
<p>peter bar</p>а так? |
Frozen Coyote,
var apr = "It's a dark april night",
may = "It's a bright may day",
jun = "It's a bright june day",
jul = "It's a bright july day";
var pattern = (".* bright(?!june).* day.*");
apr.match(pattern) ? alert("Gotcha!") : alert("Sorry");
may.match(pattern) ? alert("Gotcha!") : alert("Sorry");
jun.match(pattern) ? alert("Gotcha!") : alert("Sorry");
jul.match(pattern) ? alert("Gotcha!") : alert("Sorry");
Я правильно понял? Аналогичный результат нужен? |
Цитата:
<html>
<head> </head>
<body>
<div id = "container">
<p>foo bar</p>
<div>foo bar</div>
<p>foo bar</p>
<div>foo bar</div>
<p>foo peter bar</p>
<p>peter bar</p>
<p>foo bar</p>
<div>foo bar</div>
<p>foo sam bar</p>
<p>foo bar</p>
</div>
<script>
re = /<p>(((?!peter)[\s\S])*?)<\/p>/g
console.log(
container.innerHTML.match(re).join("\n")
)
</script>
</body>
|
Alexander Belov, спасибо, все правильно получилось, ребята, всем спасибо за содействие.
еще вопрос крохотный, подскажите пожалуйста. у меня есть строка допустим "бахбахбах", если задать паттерн "бахбах" - регулярка находит только одно совпадение, проскакивая дальше, а в строке как мы видим - две комбинации. как заставить выражение выцепить оба? |
Frozen Coyote,
так не делается. Регулярки однопроходные по-определению, иначе бы они тормозили. Решайте задачу по другому |
| Часовой пояс GMT +3, время: 21:36. |