![]() |
1
6
我相信一些正则表达式大师可以拼凑出近似于解决方案的东西,但这不是一个好主意: HTML isn't regular . 请考虑一个HTML解析器,它能够识别这些问题,或者自己解析。 |
![]() |
2
2
是的,它需要递归处理,而且可能相当深(当然也可能是一个奇特的循环),它不会用正则表达式来完成。您可以制作一个处理几层深度的正则表达式,但不能只处理任何html文件。这是因为解析器必须记住在流中任何给定点打开的标记,而regex在这方面并不擅长。 使用带有一些计数器的SAX解析器,或者使用带有弹出/按下的堆栈来保持状态。想一想如何编写这个游戏,看看我说的html标记深度是什么意思。 http://en.wikipedia.org/wiki/Tower_of_Hanoi |
![]() |
4
1
不,这对于正则表达式来说太复杂了。您的问题相当于测试一个正确使用括号的算术表达式,它至少需要一个 pushdown automaton 为了成功。 在您的例子中,您应该将HTML代码拆分为开始标记、结束标记和文本节点(例如,使用正则表达式)。将结果存储在列表中。然后,您可以遍历节点列表并将每个开始标记推送到堆栈上。如果在节点列表中遇到结束标记,则必须检查最顶端的堆栈条目是否为相同类型的开始标记。否则,您会发现查找的html语法错误。 |
![]() |
5
1
我有个案子
是
|
|
6
1
您可以使用正则表达式来标识所有html开始/结束元素,然后使用堆栈枚举、推送新元素并弹出结束标记。用C#试试这个-
|
![]() |
lonix · 使用sed从JSON中提取非贪婪正则表达式 1 年前 |
![]() |
Dima Malko · 如何在指定符号前添加符号? 2 年前 |
![]() |
shekharsabale · 从列表元素捕获子字符串 2 年前 |
![]() |
Katia · 根据特定规则进行多行匹配 2 年前 |
![]() |
MHA · Pandas str.extract()以字母结尾的数字 2 年前 |
![]() |
Slava Vir · 如何查找后面“/”之间的最后一组 2 年前 |