这是字符串示例:
<option value="20150110.1932.mtsat_2.visir.bckgr.NW_Pacific_Overview.DAYNGT.jpg">20150110.1932.mtsat_2.visir.bckgr.NW_Pacific_Overview.DAYNGT.jpg</option>
<option value="20150110.1901.mtsat_2.visir.bckgr.NW_Pacific_Overview.NGT.jpg">20150110.1901.mtsat_2.visir.bckgr.NW_Pacific_Overview.NGT.jpg</option>
预计会出现:
20150110.1932.mtsat_2.visir.bckgr.NW_Pacific_Overview.DAYNGT.jpg
20150110.1901.mtsat_2.visir.bckgr.NW_Pacific_Overview.NGT.jpg
我只需要从不带引号符号的字符串中提取文件名的第一个匹配项。我该怎么办?
模式是前6位数字,以jpg结尾
我正在编程D.
我有很多变种。而且所有这些都是残废的。其中之一:
(="[0-9]{8}).+(\")
答案 0 :(得分:4)
我知道你不想使用html解析器,但是我想展示一下今后发现这个问题的人有多简单。
regex kinda sorta有时适用于html,但有很多事情它没有:它会留下html实体(例如&
)未解码并提取正确的标签可以是硬。 HTML解析器使其变得简单和正确(并且IMO更具可读性):
我的dom.d在html上做得不错,所以我将展示如何使用它。
从我的github获取dom.d:
https://github.com/adamdruppe/arsd/blob/master/dom.d
(如果您正在从随机的非UTF-8网站解析标签汤,那么characterencodings.d:https://github.com/adamdruppe/arsd/blob/master/characterencodings.d)
然后你可以这样做:
import arsd.dom;
import std.stdio;
void main() {
auto document = new Document("your html string here");
foreach(option; document.querySelectorAll("option"))
writeln(option.value); // or option.innerText
}
与dmd yourfile.d dom.d
汇编。 (如果你还需要处理非utf-8,请在命令行中添加characterencodings.d)
querySelectorAll
与CSS选择器类似,类似于Javascript和jQuery中的相同函数,因此您也可以放入上下文以从html文档的其余部分中提取选项标记。
答案 1 :(得分:2)
答案 2 :(得分:2)