这种模式的Java正则表达式是什么?

时间:2017-12-01 07:18:13

标签: java regex

我的字符串看起来像:

  

一些空格分隔的固定文本:空格分隔文本:空格分隔文本...

示例字符串:

"Mary had a little lamb: "

这里,"it says: baah"字符串是常量。它后面跟着一个字符串,其中包含字母数字字符,冒号和空格,后跟省略号。 "Mary had a little lamb: ^[a-zA-Z:]\\.\\.\\." 可能会改变。 ......永远都会在那里。

到目前为止,这是正则表达式:

"it says: baah"

但这不起作用。

我不知道如何在 for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) { UserDetails userdetails = dataSnapshot1.getValue(UserDetails.class); String name = userdetails.getName(); String message = userdetails.getMessage(); if (list.contains(new ListData(name,message))) { list.set(list.indexOf(new ListData(name,message)),new ListData(name+"check",message); } else { list.add(new ListData(name,message)); } } 中将冒号后的空格合并。我如何编写一个识别这些字符串的正则表达式?

1 个答案:

答案 0 :(得分:2)

您不应该在正则表达式中使用开头运算符,并且您的字符串可能包含除字母之外的其他字符。尝试:

"Mary had a little lamb: .*?\\.\\.\\."

问号是针对非贪婪/最短的匹配。您可以删除它以接收最长的匹配。

这个更具体的模式需要冒号并限制可能的字符:

"Mary had a little lamb: [^:]*:[ A-Za-z]*\\.\\.\\."

[^:]*匹配任何不包含冒号的字符串。

用Java(Bean Shell)进行测试:

p = java.util.regex.Pattern.compile("Mary had a little lamb: [^:]*:[ A-Za-z]*\\.\\.\\.");
m = p.matcher("Mary had a little lamb: it says: baah...");
print(m.matches());