Perl正则表达式:从困难的字符串中提取名称

时间:2019-01-23 23:34:06

标签: regex perl

我需要从以下字符串中提取三个名称:

  

author = {Kordesch,Karl and Simader,G {\“ u} nter and Wiley,John Ray},

这应该提供三个匹配项:

  1. 卡尔德施,卡尔

  2. Simader,G {\“ u} nter

  3. 威利,约翰·雷

我一直在动脑筋,无济于事。任何建议将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:0)

虽然我确定您可以通过某种正则表达式来执行此操作,但分步执行是最简单的。

首先,通过分割my($key,$names) = split /=/, $string; 来分割键/值。

{},

现在我们有了值,我们可以剥离$names =~ s/^{(.*)},?$/$1/;

Kordesch, Karl and Simader, G{\"u}nter and Wiley, John Ray

清除所有内容后,您只有my @names = split /\s+and\s+/, $names; ,可以轻松拆分成名称。

,

结尾的self.h_line.set_ydata使我怀疑这是更大数据结构的一部分。在那种情况下,解析数据结构比尝试逐行解析它更安全,更可靠。 In the comments it was mentioned this looks like it might be TeX or BibTeX。有any number of modules to parse that