2012-05-04 114 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(?:[|]|([^}]))+)? - 然後可選地匹配括號並重寫文本並使用與上述相同的邏輯來捕獲字母。