2012-05-04 70 views
0

我想从维基百科的标记如解析出的IPAc模板的内容:解析出维基百科的IPAc

'''Konjac''' ({{IPAc-en|lang|pron|ˈ|k|oʊ|n|j|æ|k}}) 

魔芋(英语发音:/koʊnjæk/)

'''Konjac''' ({{IPAc-en|lang|pron|ˈ|k|oʊ|n|j|æ|k}} {{respell|KOHN|yak}}) 

魔芋(英语发音:/koʊnjæk/科恩 - 牦牛)

''Konjac'' is pronounced {{IPAc-en|ˈ|k|oʊ|n|j|æ|k}} in English. 

魔芋读作/koʊnjæk/英文。

我需要什么正则表达式来提取这个内容|k|oʊ|n|j|æ|k我不知道如何搭配的东西,可能是有,但不一定是(lang|pron

谢谢

回答

1

我想试试这个:

IPAc-en(?:\w|[|])+.(?:[|]|([^}]))+(?:}}\s*{{respell(?:[|]|([^}]))+)? 

它应该匹配主要发音以及可选的'respell'的东西。

这两个pronounciations的匹配将在捕获组,所以你应该能够从Java访问它。

说明:

  • IPAc-en(?:\w|[|])+. - 匹配开始,然后单词字符或管道多次,你可以。匹配一个其他角色(这是发音开始的有趣之处)。不要捕捉任何东西。

  • (?:[|]|([^}]))+ - 匹配一个管道(不捕获)或其他任何不是闭合花括号(捕获 - 这就是你想要的字符)。重复,直到字符串结束或直到找到}

  • (?:}}\s*{{respell(?:[|]|([^}]))+)? - 然后可选地匹配括号并重写文本并使用与上述相同的逻辑来捕获字母。