我想从维基百科标记中解析出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}})
Konjac(英文发音:/koʊnjæk/ kohn-yak)
''Konjac'' is pronounced {{IPAc-en|ˈ|k|oʊ|n|j|æ|k}} in English.
Konjac发音为/koʊnjæk/ in English。
我需要提取哪些正则表达式才能提取此内容|k|oʊ|n|j|æ|k
我不知道如何匹配可能存在但可能不存在的内容(lang|pron
)
谢谢
答案 0 :(得分:1)
我会尝试一下:
IPAc-en(?:\w|[|])+.(?:[|]|([^}]))+(?:}}\s*{{respell(?:[|]|([^}]))+)?
它应该匹配主要发音以及可选的“重复”事物。
两个发音的匹配将在捕获组中,因此您应该能够从java访问它。
说明:
IPAc-en(?:\w|[|])+.
- 尽可能多地匹配开头,然后匹配单词字符或管道。匹配另一个角色(这是发音开始的有趣的一个)。不捕捉任何东西。
(?:[|]|([^}]))+
- 匹配管道(不捕获)或其他任何不是结束花括号的东西(捕获 - 这是你想要的字符)。重复直到字符串结尾或直到找到}
(?:}}\s*{{respell(?:[|]|([^}]))+)?
- 然后可选地匹配括号并重新处理文本,并使用与上面相同的逻辑来捕获字母。