【发布时间】:2013-07-18 20:48:13
【问题描述】:
我有以下有效的代码:(标准文本字符串)
($txid) = $content =~ m/ start (.*) stop /;
print $txid;
下面这段代码没有:(带引号的字符串)
($txid) = $content =~ m/<input name="transactionid" value="(.*)" type="hidden">/;
print $txid;
我猜问题是由引号引起的。有谁知道我该如何解决这个问题?
【问题讨论】:
-
这个问题很可能不是带引号的。 (a) 不要用正则表达式解析 HTML,这势必会产生脆弱的解决方案。 (b) 你有什么意见?给我们举个例子。
-
"It's not working"不是描述问题的好方法。 -
这里输入的内容太大了,是HTML的网页。第一个我刚刚做了一个字符串“start hello stop”,它正确返回了“hello”。第二个只是返回一个空变量。我检查了 $content 填充了正确的数据,我只需要获取隐藏字段“transactionid”的值。
-
也许您应该提供一个示例输入,其中包含可以粘贴到您的问题中的相关数据。理想情况下,您应该写一个sscce,以便人们可以直接进入,运行您的代码并回答您的问题。也就是说,如果您想要快速而好的答案。
-
不要使用正则表达式解析 HTML。您无法使用正则表达式可靠地解析 HTML,并且您将面临悲伤和挫败感。一旦 HTML 与您的期望发生变化,您的代码就会被破坏。有关如何使用已经编写、测试和调试过的 Perl 模块正确解析 HTML 的示例,请参阅 htmlparsing.com/perl。
标签: regex perl html-parsing