Вы на правильном пути. Вам не нужно внешнее 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