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

为什么正则表达式如此具有争议性?

在探索正则表达式(也称为RegEx-es)时,有许多人似乎将正则表达式视为圣杯.看起来如此复杂的东西 - 只是必须回答任何问题.他们倾向于认为使用正则表达式可以解决所有问题.

另一方面,也有许多人试图不惜一切代价避免使用正则表达式.他们试图找到解决正则表达式的方法并接受额外的编码只是为了它,即使正则表达式是一个更紧凑的解决方案.

为什么正则表达式被认为是如此有争议?是否存在关于它们如何工作的普遍误解?或者可能是一个普遍的信念,正则表达式通常很慢?

regex

209
推荐指数
13
解决办法
4万
查看次数

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

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

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

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

regex html-parsing

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

如何使用C#来清理html页面上的输入?

是否有库或可接受的方法来清理html页面的输入?

在这种情况下,我有一个只有姓名,电话号码和电子邮件地址的表单.

代码必须是C#.

例如:

"<script src='bobs.js'>John Doe</script>" 应该成为 "John Doe"

c# html-sanitizing antixsslibrary

36
推荐指数
5
解决办法
3万
查看次数

为什么用正则表达式解析XML是个坏主意?

我刚刚回顾了我之前发过的一篇文章,并注意到一些人建议我不使用正则表达式来解析xml.在这种情况下,xml相对简单,Regex没有任何问题.我还在解析许多其他代码格式,所以为了统一起见,它是有意义的.但我很好奇这可能会在其他情况下造成问题.这只是一个"不要重新发明轮子"的问题吗?

regex xml xml-parsing

25
推荐指数
3
解决办法
2万
查看次数

更好的方法来检测XML?

目前,我有以下c#代码从文本中提取值.如果是XML,我想要其中的值 - 否则,如果它不是XML,它只能返回文本本身.

String data = "..."
try
{
    return XElement.Parse(data).Value;
}
catch (System.Xml.XmlException)
{
    return data;
}
Run Code Online (Sandbox Code Playgroud)

我知道C#中的异常是昂贵的,所以我想知道是否有更好的方法来确定我正在处理的文本是否是xml?

我想到了正则表达式测试,但我不认为这是一个更便宜的替代方案.请注意,我要求一种更便宜的方法.

c# xml optimization xml-parsing

24
推荐指数
3
解决办法
1万
查看次数

我应该避免正则表达式吗?

我认识的人一直在告诉我应该避免RegEx,因为它是重量级的或者涉及繁重的处理.这是真的?这让我耳边鼓掌,直到现在我的耳膜响了起来.

我不知道为什么他告诉我.它可能来自经验还是仅仅是三手资料(你知道我的意思......)?

所以,明白地说,我为什么要避免使用正则表达式?

我希望SO社区的主人提供信息,与我分享他们的想法.多谢你们!

regex

20
推荐指数
9
解决办法
4030
查看次数

何时不在C#中使用Regex(或Java,C++等)

很明显,有很多问题看起来像一个简单的正则表达式将解决,但事实证明,使用正则表达式很难解决.

那么,不是正则表达式专家的人怎么知道他/她是否应该学习正则表达式来解决给定的问题?

(请参阅"正则表达式解析C#源代码以查找所有字符串",以便我提出这个问题.)

这似乎总结得很好:

有些人在遇到问题时会想"我知道,我会使用 正则表达式."现在他们有两个问题......

(我刚刚更改了问题的标题以使其更具体,因为在C#中使用Regex的一些问题在Perl和JScript中得到了解决,例如,两个引用级别使Regex难以理解.)

c# java regex

19
推荐指数
1
解决办法
3049
查看次数

哪些PHP Web爬网程序库可用?

我正在寻找一些健壮的,记录良好的PHP Web爬虫脚本.也许是Java项目的PHP端口 - http://wiki.apache.org/nutch/NutchTutorial

我正在寻找免费和非免费版本.

php web-crawler

9
推荐指数
1
解决办法
2万
查看次数