相关疑难解决方法(0)

除了XHTML自包含标记之外,RegEx匹配开放标记

我需要匹配所有这些开始标记:

<p>
<a href="foo">
Run Code Online (Sandbox Code Playgroud)

但不是这些:

<br />
<hr class="foo" />
Run Code Online (Sandbox Code Playgroud)

我想出了这个,并希望确保我做对了.我只抓住了a-z.

<([a-z]+) *[^/]*?>
Run Code Online (Sandbox Code Playgroud)

我相信它说:

  • 找一个小于,然后
  • 然后,查找(并捕获)az一次或多次
  • 然后找到零个或多个空格
  • 找到任何字符零次或多次,贪婪/,然后
  • 找到一个大于

我有这个权利吗?更重要的是,你怎么看?

html regex xhtml

1323
推荐指数
36
解决办法
270万
查看次数

使用正则表达式解析HTML:为什么不呢?

似乎stackoverflow上的每个问题,其中提问者使用正则表达式从HTML中获取一些信息将不可避免地有一个"答案",表示不使用正则表达式来解析HTML.

为什么不?我知道那里有引用 - 不引用"真正的"HTML解析器,比如Beautiful Soup,我相信它们是强大而有用的,但是如果你只是做一些简单,快速或肮脏的事情,那么为什么当一些正则表达式语句运行得很好时,麻烦​​使用如此复杂的东西?

此外,是否有一些基本的东西,我不了解正则表达式,这使得它们一般是解析的错误选择?

regex html-parsing

202
推荐指数
10
解决办法
6万
查看次数

使用正则表达式(PCRE)匹配a ^ nb ^ nc ^ n(例如"aaabbbccc")

众所周知,现代正则表达式实现(最值得注意的是PCRE)与常规语法的原始概念几乎没有共同之处.例如,您可以解析无上下文语法的经典示例{a n b n ; n> 0}(例如aaabbb)使用此正则表达式(演示):

~^(a(?1)?b)$~
Run Code Online (Sandbox Code Playgroud)

我的问题是:你能走多远?是否也可以使用PCRE 解析上下文敏感的语法 {a n b n c n ; n> 0}(例如aaabbbccc)?

php regex pcre

42
推荐指数
4
解决办法
6232
查看次数

扩展的正则表达式实现可以解析HTML吗?

我知道你在想什么 - "噢,天哪,认真,不再" - 但请耐心等待,我的问题不仅仅是标题.在开始之前,我保证永远不会尝试用正则表达式解析任意HTML,或者问别人怎么做.

这里解释为什么你不能这样做的所有许多答案都依赖于正则表达式的正式定义.它们解析常规语言,HTML是无上下文但不是常规的,所以你不能这样做.但我也听说过各种语言的许多正则表达式实现都不是严格规范的; 他们带来了超出正式正则表达范围的额外技巧.

由于我不知道任何特定实现的细节,例如perl,我的问题是:

  1. 正则表达式工具的哪些功能是非常规的?它是后面的参考吗?他们找到了哪些语言?
  2. 这些额外的技巧是否足以解析所有无上下文的语言?
  3. 如果对#2为"否",那么这些额外功能是否涵盖了正式的类别或类别的语言?我们怎样才能快速知道我们试图解决的问题是否在我们不一定正则表达式的力量范围内?

regex

6
推荐指数
1
解决办法
530
查看次数

标签 统计

regex ×4

html ×1

html-parsing ×1

pcre ×1

php ×1

xhtml ×1