我的字符串看起来像:
一些空格分隔的固定文本:空格分隔文本:空格分隔文本...
示例字符串:
"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));
}
}
中将冒号后的空格合并。我如何编写一个识别这些字符串的正则表达式?
答案 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());