我想从Wikipedia标记中解析出IPAc模板的内容,例如:
'''Konjac''' ({{IPAc-en|lang|pron|ˈ|k|oʊ|n|j|æ|k}})
Konjac(英语发音:/ ˈkoʊnjæk /)
'''Konjac''' ({{IPAc-en|lang|pron|ˈ|k|oʊ|n|j|æ|k}} {{respell|KOHN|yak}})
魔芋(英语发音:/ ˈkoʊnjæk / kohn-yak)
''Konjac'' is pronounced {{IPAc-en|ˈ|k|oʊ|n|j|æ|k}} in English.
魔芋的英语发音为/ ˈkoʊnjæk /。
我需要什么正则表达式来提取此内容
|k|oʊ|n|j|æ|k
我不知道如何匹配可能存在但可能不存在的内容(lang|pron
)谢谢
最佳答案
我会尝试一下:
IPAc-en(?:\w|[|])+.(?:[|]|([^}]))+(?:}}\s*{{respell(?:[|]|([^}]))+)?
它应与主要发音以及可选的“ repell”事物相匹配。
这两个发音的匹配项将在捕获组中,因此您应该能够从java中进行访问。
说明:
IPAc-en(?:\w|[|])+.
-尽可能匹配开头和然后的字符或管道。匹配另一个字符(这是从头开始的有趣字符)。不要抓任何东西。(?:[|]|([^}]))+
-匹配管道(不捕获)或不是右花括号(捕获-这就是您想要的字符)的任何其他字符。重复此操作,直到字符串末尾或找到}(?:}}\s*{{respell(?:[|]|([^}]))+)?
-然后选择匹配方括号并拼写文字,并使用与上述相同的逻辑捕获字母。