相关疑难解决方法(0)

您能否举例说明为什么用正则表达式解析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万
查看次数

你能提供解析HTML的例子吗?

如何使用各种语言解析HTML并解析库?


回答时:

个人评论将链接到有关如何使用正则表达式解析HTML的问题的答案,作为展示正确行事方式的一种方式.

为了保持一致性,我要求该示例解析hrefin锚标记的HTML文件.为了便于搜索此问题,我要求您遵循此格式

语言:[语言名称]

图书馆:[图书馆名称]

[example code]
Run Code Online (Sandbox Code Playgroud)

请使库成为库文档的链接.如果您想提供除提取链接之外的示例,还请包括:

目的:[解析的作用]

html language-agnostic html-parsing

69
推荐指数
15
解决办法
3万
查看次数

在shell脚本中使用正则表达式

在linux shell脚本中使用正则表达式解析字符串的正确方法是什么?我写了下面的脚本来使用curl和在控制台上打印我的SO代表sed(并不仅仅是因为我反复疯狂 - 我在尝试学习一些shell脚本和正则表达式之前切换到linux).

json=$(curl -s http://stackoverflow.com/users/flair/165297.json)
echo $json | sed 's/.*"reputation":"\([0-9,]\{1,\}\)".*/\1/' | sed s/,//
Run Code Online (Sandbox Code Playgroud)

但不知何故,我觉得这sed不适合在这里使用.我听说这grep是关于正则表达式并且稍微探讨了一下.但显然它会在找到匹配时打印整行 - 我试图从单行文本中提取一个数字.这是我正在处理的字符串的缩小版本(返回curl).

{"displayName":"Amarghosh","声誉":"2,737","badgeHtml":"\ u003cspan title = \"1银徽章\"\ u003e\u003cspan class = \"badge2 \"\ u003e●\u003c/span\u003e\u003cspan class = \"badgecount \"\ u003e1\u003c/span\u003e\u003c/span\u003e"}

我想我的问题是:

  • 在linux shell脚本中使用正则表达式解析字符串的正确方法是什么?
  • sed在这里使用是正确的吗?
  • 这可以用grep吗?
  • 还有其他命令更容易/更合适吗?

regex linux shell

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

使用Perl解析与正则表达式链接的HTML页面

可能重复:
如何使用Perl从HTML中删除外部链接?

好吧,我正在为一个客户工作,他刚刚将他的语言选择改为Perl.我不是Perl中最好的,但我之前用它做过这样的事情,虽然不久前.

有很多像这样的链接:

<a href="/en/subtitles/3586224/death-becomes-her-en" title="subtitlesDeath Becomes Her" onclick="reLink('/en/subtitles/3586224/death-becomes-her-en');" class="bnone">Death Becomes Her
        (1992)</a>
Run Code Online (Sandbox Code Playgroud)

我想匹配路径"/ en/subtitles/3586224/death-become-her-en"并将它们放入数组或列表中(不确定Perl中哪些更好).我一直在搜索perl文档,以及查看正则表达式教程,并且大多数(如果不是全部)似乎都倾向于使用〜=来匹配内容而不是捕获匹配.

谢谢,

科迪

html regex perl parsing html-parsing

0
推荐指数
1
解决办法
2216
查看次数

标签 统计

html ×3

regex ×3

html-parsing ×2

language-agnostic ×1

linux ×1

parsing ×1

perl ×1

shell ×1

xml ×1