Java正则表达式匹配方括号

时间:2017-04-06 05:05:49

标签: java regex

我正在尝试使用正则表达式(java replaceAll)执行以下操作:

**Input:**
Test[Test1][Test2]Test3

**Output**
TestTest3

简而言之,我需要删除方括号内的所有内容,包括方括号。

我正在尝试这个,但它不起作用:

\\[(.*?)\\]

你能帮忙吗?

谢谢,
腰带

3 个答案:

答案 0 :(得分:11)

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

\[[^\[]*\]

并替换为空

Demo

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);

答案 1 :(得分:3)

您的原始模式适合我:

df = pd.read_csv(StringIO(temp),delim_whitespace=True, parse_dates={'Dates':['Date','Time']})

mask = df.Dates.dt.round('H').ne(df.Dates)
df1 = df[mask]
print (df1)
                 Dates  Point_1
1  2017-03-27 00:05:00    12.96
2  2017-03-27 00:10:00    13.30
3  2017-03-27 00:15:00    13.27
4  2017-03-27 00:20:00    13.15
5  2017-03-27 00:25:00    13.14
6  2017-03-27 00:30:00    13.25
7  2017-03-27 00:35:00    13.26
8  2017-03-27 00:40:00    13.24
9  2017-03-27 00:45:00    13.43
10 2017-03-27 00:50:00    13.23
11 2017-03-27 00:55:00    13.27
13 2017-03-27 01:05:00    13.17
14 2017-03-27 01:10:00    13.10
15 2017-03-27 01:15:00    13.06
16 2017-03-27 01:20:00    12.99
17 2017-03-27 01:25:00    13.08
18 2017-03-27 01:30:00    13.04
19 2017-03-27 01:35:00    13.06
20 2017-03-27 01:40:00    13.07
21 2017-03-27 01:45:00    13.07
22 2017-03-27 01:50:00    13.02
23 2017-03-27 01:55:00    13.13

<强>输出:

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

请注意,括号内不需要括号。如果您计划捕获每对括号之间的内容,则可以使用它,在您不需要的情况下。将它们放在那里并没有错,只是没有必要。

在这里演示:

Grouper

答案 2 :(得分:0)

\[\w+]

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