【发布时间】:2021-08-12 05:28:51
【问题描述】:
我希望提取恰好在< 和> 中找到的文本,同时还提取在> 和< 之间找到的内容。
例如:
-
<html>只会返回<html> -
<title>This is a title</title>将返回<title>、This is a title、</title> -
This is a title将返回This is a title -
最后
<title>This is a weird use of < bracket</title>应该返回<title>、This is a weird use of < bracket、</title>。我当前的版本识别为<title>、This is a weird use of、< bracket、</title>
我将不胜感激任何 sn-ps 代码或前往解决方案的指导。
tldr,用<...> 和>...< 分别获取子字符串,而不会被浮动的...>... 或...<... 难住。
编辑:不再使用strtok,如果您知道任何其他帮助或类似问题,将不胜感激。任何阅读的东西也将是非常有益的。注意:我们不是在尝试解析,只是对输入字符串进行 lex
只能使用 c 的标准库。
【问题讨论】:
-
strtok不是你的朋友。您应该使用循环和测试显式解析 HTML 语法。 -
@chqrlie,感谢您的建议。
-
哦,是的,
strtok在这里完全是错误的方法,因为 HTML 太复杂而无法以这种方式解析(而且正则表达式也不正确)。最好四处寻找可以为您执行此操作的 C 库;您可能需要一个 SAX 解析器,它一次为您提供一个令牌,而不是一个在内存中构建整个 HTML 树的 DOM 解析器(除非您正在寻找它)。 -
只是尝试为有效 HTML 的子集构建基本验证器。我仅限于标准 C 库。
标签: c text-parsing