Java [[类别:文本|*]]的正则表达式

Java [[类别:文本|*]]的正则表达式,java,regex,string,Java,Regex,String,用这个正则表达式\[\[Category:..*?\]\]在java中解析这个文本[[Category:sometext]],它给了我一些文本 但在某些情况下,像这样的文本[[Category:sometext |*]]额外的字符是| pipe和| star 有时两个字符都是未来文本|*,有时只有一个是未来文本|,text*,我不知道如何用正则表达式解析它 预期结果:sometext您可以只在。*之后添加这些字符?然后应用程序?量化每个事件一次或零次,使其成为可选的: \[\[Category:

用这个正则表达式\[\[Category:..*?\]\]在java中解析这个文本[[Category:sometext]],它给了我一些文本

但在某些情况下,像这样的文本[[Category:sometext |*]]额外的字符是| pipe和| star

有时两个字符都是未来文本|*,有时只有一个是未来文本|,text*,我不知道如何用正则表达式解析它


预期结果:sometext

您可以只在。*之后添加这些字符?然后应用程序?量化每个事件一次或零次,使其成为可选的:

\[\[Category:(.*?)\|?\*?\]\]

:


这是不清楚的-你希望在这种情况下的结果是什么?
String s = "[[Category:sometext]]\n[[Category:sometext|*]]\n[[Category:sometext|]]\n[[Category:sometext*]]"; 
String rx = "\\[\\[Category:(.*?)\\|?\\*?\\]\\]";
Pattern p = Pattern.compile(rx);
Matcher matcher = p.matcher(s);
while (matcher.find())
    System.out.println(matcher.group(1));