я хочу, чтобы захватить только первый матч через выражениеЗахват одного матча только - Regex
<p>.*?</p>
я попытался <p>.*?</p>{1}
, но он не работает она возвращает все р-теги, которые в HTML документе, пожалуйста, помогите
я хочу, чтобы захватить только первый матч через выражениеЗахват одного матча только - Regex
<p>.*?</p>
я попытался <p>.*?</p>{1}
, но он не работает она возвращает все р-теги, которые в HTML документе, пожалуйста, помогите
Похоже, вы используете метод, который возвращает каждое соответствие в строке с заданным регулярным выражением, так что вам нужно привязать регулярное выражение к началу строки, чтобы он не возвращал каждое совпадение, но только первый:
^.*?<p>.*?</p>
Используйте скобки для захвата того, что вы хотите захватить.
PS: Здесь идет стандартный «избегать использования регулярных выражений для разбора HTML-кода, используйте правильный совет парсера HTML. Это простое регулярное выражение не удастся для вложенных <p>
разделов (которые я не помню, если они действительны в HTML, но все же вы можете получить их, даже если они не являются).
Я попробовал, его не работаю, спасибо в любом случае – shabby
Добавляем больше контекста к вопросу, тогда какой язык вы используете, какой код вы пытаетесь, каковы ваши входные данные ... –
Я могу только предупредить предупреждение Винько, но это может быть возможно тонкой настройки регулярного выражения. На каком языке вы используете? – pavium
Метод Regex.Match
делает это по умолчанию, и правильное выражение является правильным.
Regex regex = new Regex("<p>(.*?)</p>");
Match match = regex.Match("<p>1</p><p>2</p>");
Console.WriteLine("{0}", match.Value);
Запуск этой программы будет печатать 1
.
Почему вы используете регулярное выражение для захвата внутреннего содержимого элемента? И на каком языке это? PHP? –
Что возвращает все матчи? – Gumbo