Как извлечь вторую группу из второго элемента списка из шаблона регулярных выражений в tcl - PullRequest
0 голосов
/ 02 октября 2019

Как извлечь вторую группу из второго пункта списка. Я печатаю все результаты, чтобы увидеть.

Извлеките дату из этого:

<span class="rel_date">26 Sep at 12:18 am</span>
(...)
    set result [regexp -inline -all -line {(?:class="rel_date">)(.*)(?:<\/sp)} [http::data $token]]
    foreach j $result {
        foreach {group0 group1 group2} $j {
        puts $group1
        }       
    }
(...)

1 Ответ

0 голосов
/ 02 октября 2019

Вы на правильном пути. Вам не нужно внешнее foreach:

set result [regexp -inline -all -line {(?:class="rel_date">)(.*)(?:<\/sp)} [http::data $token]]
foreach {group0 group1} $result {
    puts $group1
    # => 26 Sep at 12:18 am
}

В результатах действительно только две группы. Один содержит основное совпадение, второй содержит первую группу захвата (( ... ) - это группа захвата, но (?: ... ) - нет)

Если на одной и той же странице окажется много таких интервалов, товышеуказанный цикл все равно будет работать:

set page {
    <span class="rel_date">26 Sep at 12:18 am</span>
    <span class="rel_date">26 Sep at 12:19 am</span>
}

set result [regexp -inline -all -line {(?:class="rel_date">)(.*)(?:<\/sp)} $page]
foreach {group0 group1} $result {
    puts $group1
}
# => 26 Sep at 12:18 am
# => 26 Sep at 12:19 am
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...