Java正则表达式匹配方括号

9
我将使用正则表达式(Java replaceAll)来实现以下操作:
**Input:**
Test[Test1][Test2]Test3

**Output**
TestTest3

简而言之,我需要删除包括方括号在内的所有内容。
我尝试了以下方法,但它不起作用:
\\[(.*?)\\]

你能帮忙吗?

谢谢,
Sash


VTC,缺少MCVE,无法确定出现问题的模式。http://ideone.com/wf5YMT - Sebastian Proske
你计划使用嵌套括号吗?还是像你在这里展示的那样,所有内容都是顶层的? - Tim Biegeleisen
@TimBiegeleisen 一切都是顶级的。谢谢。 - Pruthvi Raj Nadimpalli
3个回答

14

你可以尝试使用这个正则表达式:

\[[^\[]*\]

并将其替换为空

演示

Java源代码示例:

final String regex = "\\[[^\\[]*\\]";
final String string = "Test[Test1][Test2]Test3\n";
final String subst = "";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);
final String result = matcher.replaceAll(subst);
System.out.println(result);

谢谢 @Rizwan,它有效,给你+1赞赏分享示例源码,尽管你不必这么做! - Pruthvi Raj Nadimpalli
@sash 很高兴知道它对你有用,不要在意痛苦!只要源代码是生成的 :) 你也可以从 regex101.com 生成。 - Mustofa Rizwan

3

您原始的模式对我有效:

String input = "Test[Test1][Test2]Test3";
input = input.replaceAll("\\[.*?\\]", "");
System.out.println(input);

输出:

TestTest3

请注意,在括号内不需要加括号。如果您计划捕获每对括号之间的内容,则需要使用它,但在您的情况下不需要。在那里加上括号并不是错误的,只是没有必要。
演示请看这里:

Rextester


谢谢Tim。给你点赞。这个可行,但是@Rizwan更快。 - Pruthvi Raj Nadimpalli

0
\[\w+]

这对我有用,这个正则表达式匹配所有被方括号包围的单词。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接