如何从 tcl 中的正则表达式模式中从列表的第二项中提取第二组
How to extract second group from second item of list from a regexp pattern in tcl
如何从列表的第二项中提取第二组。
我正在打印所有结果以供查看。
从中提取日期:
<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
}
}
(...)
你走在正确的轨道上。你不需要外 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
如何从列表的第二项中提取第二组。 我正在打印所有结果以供查看。
从中提取日期:
<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
}
}
(...)
你走在正确的轨道上。你不需要外 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