单个正则表达式捕获组是否可以捕获没有某些中间字符的短语?

时间:2011-04-29 15:47:51

标签: regex perl

我正在研究一种XML,它列出了要用作捕获组的正则表达式。为什么这样做是一个漫长的故事而不是我可以改变的事情。

我刚刚遇到一种情况,我希望捕获一个跨越两行的名称,即Bob\nJones。有没有办法让我在Perl中使用正则表达式将整个名称捕获到一个捕获组而不使用任何其他捕获组?基本上,我想要的是$1 = "Bob Jones",用空格替换\n

我认为这是不可行的,正确的方法就是用来捕捉小组的名字和名字(在我的情况下我做不到),但我想我还是会问在我放弃它之前。有什么想法吗?

2 个答案:

答案 0 :(得分:6)

没有

答案 1 :(得分:1)

也许您应该查看一些XML解析器模块。 XML::Simple很简单......很简单,并且可以比使用正则表达式更好地解析XML文件。正如您所发现的那样,在您尝试解析每个可能的组合时,迟早会达到正则表达式开始变得非常复杂的程度。

我希望标准的Perl安装带有XML和HTML以及LWP模块。我的大量Perl脚本总是需要HTML访问或解析XML文件,有时无法从CPAN下载和编译所需的模块。我相信XML :: Simple需要一些其他的XML模块才能工作(XML::SAX会想到),但是没有C代码编译。

这意味着您可以使用Perl脚本将XML :: Simple模块放在目录中。默认情况下,@INC数组确实包含当前目录。 (或者,您可以使用use lib编译指示。)