Perl Regex для анализа первого тега привязки <a> - PullRequest
0 голосов
/ 08 января 2019

У меня под HTML-страницей есть два anchor тега в качестве входных данных для моего perl-скрипта:

<a href="link.html"> TITLE </a> <a href="link.html"> SUB TITLE </a>

Я хочу извлечь только заголовок, т. Е. Мне нужен текст только из первого тега привязки <a>, а второй тег привязки <a> текст следует игнорировать. И это мне нужно сделать только с помощью Perl Regex.

Я пробовал ниже Regex, но он не работает должным образом:

<a[^>]*[^>]*>(?!.*a>.*)a>


Весь сценарий выглядит так:

#!/usr/bin/perl

use strict;
use warnings;

my $str = '<a href="link.html"> TITLE </a> <a href="link.html"> SUB TITLE </a>';

my $res = $str =~ m/<a[^>]*[^>]*>(?!.*a>.*)a>/;

print $res;

Исполнение:

 prakash@prak-pc:~$ perl regtest.pl 
 prakash@prak-pc:~$

Ответы [ 2 ]

0 голосов
/ 08 января 2019
my $str = '<a href="link.html"> TITLE </a> <a href="link.html"> SUB TITLE </a>';
my ($res) = $str =~ m~<a[^>]*>(.*?)</a>~;
print $res,"\n";

Пояснение:

m~          # match operator, delimiter
    <a      # literally <a
    [^>]*   # 0 or more any character tat is not >
    >       # >
    (.*?)   # group 1, 1 or more any character, not greedy
    </a>    # literally
~           # regex delimiter

Вы можете использовать m~<a[^>]*>\h*(.*?)\h*</a>~, если не хотите совпадать начальные и конечные пробелы.

0 голосов
/ 08 января 2019
/^(?:<a[^>]*>)([^<]*)/

см. Демонстрацию на regex101 https://regex101.com/r/Po3goc/1

  • ^ устанавливает позицию в начале строки Группа без захвата (?:] >)]
    • Квантификатор - Сопоставляет от нуля до неограниченного числа раз столько раз, сколько возможно, возвращая при необходимости (жадный)

      соответствует символу> буквально (с учетом регистра) соответствует символу> буквально (с учетом регистра) 1-я группа захвата ([^ <] <em>) Соответствует одному символу, отсутствующему в списке ниже [^ <] </em>

    • Квантификатор - Сопоставляет от нуля до неограниченного количества раз столько раз, сколько возможно, возвращая при необходимости (жадный) <соответствует символ <буквально (с учетом регистра) </li>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...