相关疑难解决方法(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万
查看次数

您能否举例说明为什么用正则表达式解析XML和HTML很困难?

一个错误我看到人们做,并再次试图解析XML或HTML用正则表达式.以下是解析XML和HTML很难的几个原因:

人们希望将文件视为一系列行,但这是有效的:

<tag
attr="5"
/>
Run Code Online (Sandbox Code Playgroud)

人们希望将<或<tag视为标记的开头,但是这样的东西存在于野外:

<img src="imgtag.gif" alt="<img>" />
Run Code Online (Sandbox Code Playgroud)

人们通常希望将起始标记与结束标记匹配,但XML和HTML允许标记包含自身(传统的正则表达式根本无法处理):

<span id="outer"><span id="inner">foo</span></span> 
Run Code Online (Sandbox Code Playgroud)

人们通常希望匹配文档的内容(例如着名的"查找给定页面上的所有电话号码"问题),但数据可能会被标记(即使在查看时看起来是正常的):

<span class="phonenum">(<span class="area code">703</span>)
<span class="prefix">348</span>-<span class="linenum">3020</span></span>
Run Code Online (Sandbox Code Playgroud)

评论可能包含格式不正确或不完整的标记:

<a href="foo">foo</a>
<!-- FIXME:
    <a href="
-->
<a href="bar">bar</a>
Run Code Online (Sandbox Code Playgroud)

你还知道其他什么问题?

html regex xml

397
推荐指数
10
解决办法
4万
查看次数

正则表达式可以用于匹配嵌套模式吗?

是否可以编写与未出现次数的嵌套模式匹配的正则表达式?例如,当外括号内嵌有未知数量的打开/关闭括号时,正则表达式是否可以匹配开括号和右括号?

例如:

public MyMethod()
{
  if (test)
  {
    // More { }
  }

  // More { }
} // End
Run Code Online (Sandbox Code Playgroud)

应该匹配:

{
  if (test)
  {
    // More { }
  }

  // More { }
}
Run Code Online (Sandbox Code Playgroud)

regex nested finite-automata

223
推荐指数
8
解决办法
11万
查看次数

使用C#正则表达式删除HTML标记

如何使用C#正则表达式替换/删除所有HTML标记,包括尖括号?有人可以帮我提供代码吗?

html c# regex parsing

137
推荐指数
7
解决办法
20万
查看次数

为什么不可能使用正则表达式来解析HTML/XML:外行人的术语中的正式解释

在没有关于解析(X)HTML或XML并且询问正则表达式的问题的情况下,SO上没有任何日子.

虽然相对容易想出用于演示此任务的正则表达式的不可行性的示例或用表达概念的表达式集合,我仍然无法在SO上找到为什么在外行人中无法做到这一点的正式解释条款.

到目前为止我在这个网站上找到的唯一正式解释可能非常准确,但对于自学成才的程序员来说也很神秘:

这里的缺陷是HTML是Chomsky Type 2语法(无上下文语法)而RegEx是Chomsky Type 3语法(正则表达式)

要么:

正则表达式只能匹配常规语言,但HTML是无上下文的语言.

要么:

有限自动机(它是正则表达式下面的数据结构)除了它所处的状态之外没有内存,如果你有任意深度的嵌套,你需要一个任意大的自动机,它与有限自动机的概念相冲突.

要么:

常规语言的Pumping引理是你不能这样做的原因.

[公平地说:以上大多数解释链接到维基百科页面,但这些并不比答案本身更容易理解].

所以我的问题是:有人可以提供一个外行人的上述正式解释的翻译,为什么不可能使用正则表达式来解析(X)HTML/XML?

编辑:在读完第一个答案之后,我认为我应该澄清:我正在寻找一个"翻译",它也简要地解释了它试图翻译的概念:在答案的最后,读者应该有一个粗略的想法 - 例如 - "常规语言"和"无语境语法"是什么意思......

regex language-agnostic

110
推荐指数
7
解决办法
2万
查看次数

你如何将Html转换为纯文本?

我有一个存储在表格中的Html片段.不是整页,没有标签等,只是基本的格式.

我希望能够在给定页面上显示Html仅作为文本,没有格式化(实际上只是前30到50个字符,但这很容易).

如何将该Html中的"文本"作为直文放入字符串中?

所以这段代码.

<b>Hello World.</b><br/><p><i>Is there anyone out there?</i><p>
Run Code Online (Sandbox Code Playgroud)

变为:

你好,世界.有没有人在那里?

html c# asp.net

87
推荐指数
9
解决办法
17万
查看次数

从字符串中删除HTML标记

如何从字符串中删除HTML标记,以便输出干净的文本?

let str = string.stringByReplacingOccurrencesOfString("<[^>]+>", withString: "", options: .RegularExpressionSearch, range: nil)
print(str)
Run Code Online (Sandbox Code Playgroud)

html ios swift

85
推荐指数
6
解决办法
4万
查看次数

参考 - 这个正则表达式意味着什么?

这是什么?

这是常见问答的集合.这也是社区Wiki,因此每个人都被邀请参与维护.

为什么是这样?

患的是给我泽码型的问题和答案不佳,没有解释.此参考旨在提供质量问答的链接.

范围是什么?

此引用适用于以下语言:,,,,,,.

这可能过于宽泛,但这些语言共享相同的语法.对于特定功能,它背后的语言标签,例如:

  • 什么是正则表达式平衡组?

regex

52
推荐指数
1
解决办法
11万
查看次数

HTML是无上下文的语言吗?

阅读一些 相关 问题让我思考HTML的理论本质.

我不是在谈论类似XHTML的代码.我正在谈论像这个疯狂的标记,这是完全有效的HTML(!)

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html<head>
<title//
<p ltr<span id=p></span</p>
</>
Run Code Online (Sandbox Code Playgroud)

因此,鉴于SGML注入的巨大复杂性,HTML是一种无上下文的语言吗?这是一种正式的语言吗?用语法?

HTML5怎么样?

我是正式语言概念的新手,所以请耐心等待.是的,我已阅读维基百科的文章;)

html sgml grammar language-theory

46
推荐指数
4
解决办法
1万
查看次数

使用正则表达式(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
查看次数