perl正则表达式中除了一切外

时间:2014-02-03 13:40:54

标签: regex perl

我想从pdf文件中获取一堆公式。公式前面的公式描述如下:

Revenues (IQ_REV_UTI)
Other Revenues, Total (IQ_OTHER_REV_UTI)
Total Revenues (IQ_TOTAL_REV_UTI)

我只想抓住括号内的所有内容(即IQ_REV_UTI)。

我可以使用以下正则表达式匹配我想要的所有内容:IQ\w+ 但是,我在我的mac上使用的程序(称为模式)不允许我提取匹配的文本。它只能让我找到并替换。因此,我需要找到一种方法来匹配除我想要提取的内容之外的所有内容。然后我可以用任何东西替换它,希望我将留下我所追求的东西(即括号内的论坛)。或者,是否还有其他正则表达式程序可以让我简单地提取匹配的文本?

3 个答案:

答案 0 :(得分:3)

我不确定我理解你的问题,但你可以像这样使用grep:

grep -Eo "IQ\w+" yourfile
IQ_REV_UTI
IQ_OTHER_REV_UTI
IQ_TOTAL_REV_UTI

根据您修改后的帖子,我觉得您只能在应用程序中使用搜索和替换,而外部脚本/工具对您没有帮助。那么,这个怎么样:

search for ".*(" and replace with "nothing"
search for ").*" and replace with "nothing"

根据您的应用程序接受的模式,搜索字符串可能是

"*("
".*("

").*"
")*"

答案 1 :(得分:0)

您可以像这样使用正则表达式:

use warnings;
use strict; 

my @file = ('Revenues (IQ_REV_UTI)', 'Other Revenues, Total (IQ_OTHER_REV_UTI)', 'Total Revenues (IQ_TOTAL_REV_UTI)', 'Line with no brackets...');

foreach (@file){
    my ($info) = /\((.+?)\)/;
    print "$info\n" if $info;
}

打印:

IQ_REV_UTI
IQ_OTHER_REV_UTI
IQ_TOTAL_REV_UTI

答案 2 :(得分:0)

道歉,但我不是编程。我使用的应用程序允许您使用正则表达式来查找和替换文本。我不认为我可以使用任何建议的编程功能,如grep或其他任何东西。我只是想知道是否有办法匹配除了仅通过正则表达式之外的所有东西。