为了简单起见,我们采取以下示例:
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
答案 0 :(得分:2)
答案 1 :(得分:2)
您可以在没有任何环视的情况下使用此正则表达式:
(?:\w+\.)+\w+:\[[^]]+\]
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));
}