我有这样的字符串:
something something [[abcd]] blah blah
something something [[xyz|abcd]] blah blah
在这两种情况下我想要的是:
something something abcd blah blah
如何在Java中仅使用1个正则表达式模式?我可以做第一个案例:
Pattern pattern = Pattern.compile("\\[\\[(.+?)\\]\\]");
Matcher m = patternLinkRemoval.matcher(text);
return m.replaceAll("$1");
答案 0 :(得分:5)
添加以下内容:
|
之外的任何内容零次或多次:[^|]*
|
:|
?
(?: ... )
对其进行分组。这是一个完整的例子:
String text1 = "something something [[abcd]] blah blah";
String text2 = "something something [[xyz|abcd]] blah blah";
Pattern pattern = Pattern.compile("\\[\\[(?:[^|]*\\|)?(.+?)\\]\\]");
System.out.println(pattern.matcher(text1).replaceAll("$1"));
System.out.println(pattern.matcher(text2).replaceAll("$1"));
<强>输出:强>
something something abcd blah blah
something something abcd blah blah
答案 1 :(得分:0)
自己找到它! \\[\\[(?:.+?\\|)?(.+?)\\]\\]