извлечь текст между тегами href notepad ++ - PullRequest
1 голос
/ 24 сентября 2019

У меня есть html-страница:

<div class="abc">
<a href="www...." title="aaaaa">TEXTONE</a>
</div>

<div class="abc">
<a href="www...." title="bbbb">TEXTTWO</a>
</div>

Только класс div одинаков, мне нужно извлечь TEXTONE и TEXTTWO.Как я могу сделать с функцией поиска?Спасибо

Ответы [ 4 ]

5 голосов
/ 24 сентября 2019

Правильный способ сделать это - использовать синтаксический анализатор, но если вы хотите, чтобы быстрое и грязное регулярное выражение использовалось в Find в Notepad ++ ...

Попробуйте следующее регулярное выражение:

\w+(?=<\/a>)            # match all [A-Za-z0-9_] before </a>

Regex Demo

Если текст может содержать пробелы, вы можете использовать следующее регулярное выражение:

(?<=>).+(?=<\/a>)

RegexДемоверсия

enter image description here

1 голос
/ 24 сентября 2019

Соответствует всему тексту в тегах <a..>, которые находятся внутри <div class="abc">, с пробелами или разрывами строк или без них.

  • Ctrl + F
  • Найти что: <div class="abc">\s+<a [^>]+>\K.+?(?=</a>)
  • check Обернуть
  • check Регулярное выражение
  • CHECK . matches newline
  • Найти следующее

Объяснение:

<div class="abc">   # literally
\s+                 # 1 or more spaces
<a [^>]+>           # <a...> tag
\K                  # forget all we have seen until this position
.+?                 # 1 or more any character, included newlines
(?=</a>)            # positive lookahead, make sure we have and tag after

Снимок экрана:

enter image description here

1 голос
/ 24 сентября 2019

Я предполагаю, что, возможно, у вас есть некоторые другие элементы, и, возможно, вы хотите найти / заменить, что, если бы это было так, какое-то выражение, похожее на:

(<div class="abc">\s*<a\s+[^>]*>)(.+?)(<\/a>)

может работать иВаш желаемый результат в $2.

Демо


Если вы хотите упростить / изменить / изучить выражение, это объяснено на верхней правой панели regex101.com .Если хотите, вы также можете посмотреть в эту ссылку , как она будет сопоставляться с некоторыми примерами ввода.


0 голосов
/ 24 сентября 2019

Улучшение регулярного выражения vs97s будет: ([\s\S])*?<a.*?>(.*?)<\/a>([\s\S])*? с \2\n в качестве замены!

Объяснение:

([\s\S])*? принимает что-либо до следующего совпадения с шаблоном, неуклюжий

<a.*?>(.*?)<\/a> берет тег <a[...]>TEXT</a> и сохраняет текст

([\s\S])*? эм ... см. Выше!; -)

Если вы замените его на \2\n, то второе совпадение, являющееся текстом тега a, будет помещено туда, за которым следует символ новой строки вместо тега.

...