过滤具有点并以方括号结尾的单词

时间:2016-12-25 06:49:38

标签: java regex

为了简单起见,我们采取以下示例:

iphone Foo.bar.StartTimestamp:[2012-11-12 TO 2016-02-15] and apple Bar.Foo.BarTimestamp:[2012-11-12 TO 2016-02-15] apple

从上面的文字我想使用正则表达式过滤Foo.bar.StartTimestamp:[2012-11-12 TO 2016-02-15]Bar.Foo.BarTimestamp:[2012-11-12 TO 2016-02-15]。可以有任何组合而不是Bar.Foo.BarTimestamp:[2012-11-12 TO 2016-02-15],但它的格式相同。

我尝试了这个(?<!\\S)[][^[]]*正则表达式,但它的唯一过滤文本被方括号括起来。

我应该如何构建正则表达式以获得所需的结果?

这里是regex101.com的链接:https://www.regex101.com/r/QLP4jB/1

2 个答案:

答案 0 :(得分:2)

试试这个正则表达式:

\w+(\.\w+)*:\[[^]]*\]

Regex Tester.

答案 1 :(得分:2)

您可以在没有任何环视的情况下使用此正则表达式:

(?:\w+\.)+\w+:\[[^]]+\]

RegEx Demo

Java代码

final String regex = "(?:\\w+\\.)+\\w+:\\[[^]]+\\]";
final String string = "iphone Foo.bar.StartTimestamp:[2012-11-12 TO 2016-02-15] and apple Bar.Foo.BarTimestamp:[2012-11-12 TO 2016-02-15] apple";

final Pattern pattern = Pattern.compile(regex);
final Matcher matcher = pattern.matcher(string);

while (matcher.find()) {
    System.out.println("Matched: " + matcher.group(0));
}