我需要提取这段文字:
Line 1 text.
Line 2 text. Line 2 some more text.
Line 3 text,
Line 4 text
来自这个HTML:
...
<tr><td class="td_my_custom_text">Line 1 text.
<br>Line 2 text. Line 2 some more text.
<br>Line 3 text,
<br>Line 4 text
<br></td></tr><tr><td> </td></tr>
...
使用此RegEx:<td\ class="td_my_custom_text">[\s\S]*?</td>
我设法收到了一些但距离不够近的地方。 <td class="td_my_custom_text">
,<br>
和</td>
仍然在里面,我被困住了。
答案 0 :(得分:2)
看起来你最好不要剥离标签,因为这基本上就是你正在做的事情。
您还应该在评论中查看dasbinkenlight的链接,以了解有关HTML解析的更多信息。
答案 1 :(得分:2)
您可以使用正则表达式替换删除所有html标记(&lt;&gt;中的任何文本),但在您的示例中,您将留下
。最好的方法是HTML解析器。根据您的编程语言,您可以使用库。
您可以尝试使用FakeRainBrigand的方法,甚至可以将其调整为VBScript:创建.vbs文件并添加以下测试代码:
Set objIE = CreateObject("internetexplorer.application")
strHTML = "<tr><td class='td_my_custom_text'>Line 1 text. <br>Line 2 text.<br></td></tr><tr><td> </td></tr>"
objIE.navigate("about:blank")
objIE.document.body.innerHTML = strHTML
msgbox objIE.document.body.innerText
保存文件。打开时,它会出现一个带有解析HTML的消息框。然后,您可以使用Scripting.FileSystemObject列出文件夹中的所有文件,并一次处理一个文件。有几个例子说明如何做到这一点 - 例如VBScript to detect today's modified files in a folder (including subfolders inside it)其他示例,如果你谷歌“VBS列出文件夹中的所有文件”。
答案 2 :(得分:1)
您可以使用Internet Explorer的COM界面。使用语言AutoHotkey_L。
ex_html =
(
<tr><td class="td_my_custom_text">Line 1 text.
<br>Line 2 text. Line 2 some more text.
<br>Line 3 text,
<br>Line 4 text
<br></td></tr><tr><td> </td></tr>
)
pwb := ComObjCreate("InternetExplorer.Application")
pwb.navigate("about:blank")
pwb.document.body.innerHTML := ex_html
text := pwb.document.body.innerText
pwb.quit()
MsgBox % text
导航到空白页面,注入HTML代码,然后使用innerText
DOM属性清除所有特殊标记。
在循环中运行innerHTML和innerText行可以快速清理所有HTML输入。阅读FileRead和Loop (files & folders)等命令,获取有关访问多个输入文件的帮助。