我需要从以下字符串中提取三个名称:
author = {Kordesch,Karl and Simader,G {\“ u} nter and Wiley,John Ray},
这应该提供三个匹配项:
卡尔德施,卡尔
Simader,G {\“ u} nter
威利,约翰·雷
我一直在动脑筋,无济于事。任何建议将不胜感激。谢谢。
答案 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。