java - 过滤带点并以方括号结尾的单词

标签 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

最佳答案

您可以使用此正则表达式而无需任何环视:

(?:\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));
}

关于java - 过滤带点并以方括号结尾的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41319218/

相关文章:

带有正则表达式的 Python 3.7 : Why can I no longer substitute with a string containing a backslash (\)?

regex - 如何用正则表达式拆分 ruby 字符串?

c++ - 将正则表达式编译成 native 程序集会比 PCRE 或其他正则表达式引擎更快吗?

java - 为什么我收到这样的消息 :java. lang.NoSuchMethodError: No virtual method fetchProvidersForEmail(Ljava/lang/String;)

java - 提取 pdf 页面并插入到现有 pdf 中

java - 我应该使用什么 GWT 小部件来显示对象的字符串属性?

regex - Perl 多行正则表达式

php - 在php中更改ISO日期时间格式

java - 如何在 LibGDX 中压入和弹出矩阵堆栈

java - java中hibernate使用的java列表接口(interface)的语法?