java中需要复杂的正则表达式帮助

时间:2016-12-20 05:50:16

标签: java regex expression uuid

我需要匹配以下变体。

annotation: 103810471047
annotation: 1038104710
ANnoTAtION: 1038104710
ANnoTAtION: 103810571057
Annotation: asdf1234-as12-as12-as12-asdf1234asdf-abcd1234asdf1234asdf12
ANNotation: asdf1234-as12-as12-as12-asdf1234asdf-abcd1234asdf1234asdf12

我无法提出正确的表达方式。 到目前为止,我已经尝试了以下两个使用前瞻。

\b(\Qannotation\E|)\b((?=[^\w\r\n\.!\?$]{0,5}?)(?:[A-Z\d]+\b|(["']).*?\3))|((?=[\w]{8}-[\w]{4}-[\w]{4}-[\w]{4}-[\w]{12}-[\w]{22}\b)[\w]{8}-[\w]{4}-[\w]{4}-[\w]{4}-[\w]{12}-[\w]{22}\b)|((?=[\w]{8}-[\w]{4}-[\w]{4}-[\w]{4}-[\w]{12}-[\w]{22}\b)[\w]{8}-[\w]{4}-[\w]{4}-[\w]{4}-[\w]{12}-[\w]{22}\b)

但它似乎没有正确匹配。我需要它来匹配任何匹配不区分大小写的注释的内容,后跟8-12位数之间的数字或带有8,4,4,4,12,22个字符的连字符分隔单词列表。

它应该返回2组。 第一组是"注释" 第二组是8-12位数字,或带有8,4,4,4,12,22个字符的连字符单独的单词列表。

1 个答案:

答案 0 :(得分:3)

您可以尝试正则表达式:(?i)annotation:.*?\s(?:(?:\d{8,12})|(?:\w{8}-\w{4}-\w{4}-\w{4}-\w{12}-\w{22}))

Demo here