2012-05-14 34 views
2

我有以下类型的字符串(其中引号表示,他们都是在同一行):解析特定类型的字符串在Perl

“氨基-2,4,6-三碘ACIDS雨果霍尔特曼,Baerum,Leif Gunnar Haugen,Oslo和挪威Baerum的Knut Wille转让给Nye-5“

”用于生产乙烯化合物的方法Duncan Clark和Percy Hayden,Norton-on-Tees,Eng-5土地,转让人ImperiaI化学工业有限公司,伦敦,英国“

我想获得标题后的一切(全部大写的部分)。所以,我想获得:

“雨果霍尔特曼,贝鲁姆,雷夫贡纳尔·豪根,奥斯陆和克努特意志,贝鲁姆,挪威,转让给Nye- 5”

“邓肯克拉克和珀西·海登,Norton-英国伦敦ImperiaI化学工业有限公司的土地,转让人“

我有比这两个更多的字符串,但基本的格式是发明的标题总是大写的字母和数字。

有没有办法用perl中的正则表达式来做到这一点?

+0

这是*通常为*大写,或总是大写?通常不会对你有所帮助。我觉得这可能是不可能的,这取决于名字格式化的程度。如果你有某人的名字,那只是一个最初的名字,即'J. Doe'我想不出任何合乎逻辑的方式将它与标题区分开来。 – Tim

+0

它总是大写。我不是在寻找100%准确的东西。一些70-80%的东西就可以了 –

回答

0

试试这个:

$text = "PROCESS FOR THE PRODUCTION OF ETHYLENIC COMPOUNDS Duncan Clark and Percy Hayden, Norton-on-Tees, Eng- 5 land, assignors to ImperiaI Chemical Industries Limited, London, England "; 

if($text =~ m/(\b[A-Z0-9-, ]+)\b(.*)/) { 
    print "$2"; 
} 
1

那么,如果它不需要是100%准确的,我只想寻找第一个首都,之后将第一小写字母,并抢行的其余部分。

像这样的东西(我的Perl的有点生疏,原谅任何语法错误):

$part_of_line = $full_line =~/([A-Z][a-z].*)/

0

我试着用这一点,并得到您所期望

if($ip =~ m/([A-Z0-9,\- ]+)([A-Z]+[a-z]+.*)/) 
{ 
     print "$2"; 
} 
0

标题输出始终结束与大写字母+空格,所以这应该工作:

/^.+[A-Z]+ (.+)$/; 
print $1; 
+0

这两个例子都失败了。它只是跳过所有上限中的第一个单词。 – TLP

+0

对不起,错了?之后,+ 现在它应该工作 – Dimanoid

0

如何:

#!/usr/bin/perl 
use strict; 
use warnings; 
use 5.014; 

my $re = qr 
    /^    # Start of string 
    [\p{Lu}\pN, -]+ # one or more uppercase letter or number or comma or space or dash 
    (    # start group 1 
     \p{Lu}[\pL.'] # one uppercase letter followed by any letter or dot or apostroph 
    )     # end group 
    /x; 
while(<DATA>) { 
    chomp; 
    s/$re/$1/g;  # replace match by group 1 
    say; 
} 


__DATA__ 
AMINO-2,4,6-TRIIODOBENZOIC ACIDS Hugo Holtermann, Baerum, Leif Gunnar Haugen, Oslo, and Knut Wille, Baerum, Norway, assignors to Nye- 5 
PROCESS FOR THE PRODUCTION OF ETHYLENIC COMPOUNDS Duncan Clark and Percy Hayden, Norton-on-Tees, Eng- 5 land, assignors to ImperiaI Chemical Industries Limited, London, England 
PROCESS FOR THE PRODUCTION OF ETHYLENIC COMPOUNDS D.Clark 
PROCESS FOR THE PRODUCTION OF ETHYLENIC COMPOUNDS O'Connors 

输出:

Hugo Holtermann, Baerum, Leif Gunnar Haugen, Oslo, and Knut Wille, Baerum, Norway, assignors to Nye- 5 
Duncan Clark and Percy Hayden, Norton-on-Tees, Eng- 5 land, assignors to ImperiaI Chemical Industries Limited, London, England 
D.Clark 
O'Connors