我想知道是否有人可以帮我确定一个字符串是否包含某个正则表达式。
这是我到目前为止所做的:
Pattern pattern = Pattern.compile("\\[[0-9]+\\-+[0-9]\\]");
Matcher matcher = pattern.matcher(message);
System.out.println("" + matcher.matches());
如果消息类似于“[1-3]”,则返回true,但如果消息周围有其他字符则不返回。此外,我希望能够获得字符串中的两个值。任何帮助表示赞赏。
答案 0 :(得分:2)
如果它周围有其他字符,则[不起作用]。
这是因为matches
查找正则表达式以匹配整个字符串。如果您需要知道是否存在部分匹配,请改用find()
:
System.out.println("" + matcher.find());
另外,我希望能够在字符串中找到两个值。
通过添加括号
,在数字部分周围创建捕获组Pattern pattern = Pattern.compile("\\[([0-9]+)\\-+([0-9])\\]");
Matcher matcher = pattern.matcher(message);
if (matcher.find()) {
System.out.println(matcher.group(1));
System.out.println(matcher.group(2));
}
请注意,第二个数字将是一位数字,除非您在方括号之后放置+
,就像捕获第一个数字组的表达式一样。