代码:
import java.util.regex.*;
public class eq {
public static void main(String []args) {
String str1 = "some=String&Here&modelId=324";
Pattern rex = Pattern.compile(".*modelId=([0-9]+).*");
Matcher m = rex.matcher(str1);
System.out.println("id = " + m.group(1));
}
}
Exception in thread "main" java.lang.IllegalStateException: No match found
在调用group()
和相关函数查询匹配的文本或操作它(start()
、end()
、appendreplacement(StringBuffer sb,String replacement)
等)之前,需要在matcher
上调用find()
。
所以在你的情况下:
if (m.find()) {
System.out.println("id = " + m.group(1));
}
这将查找第一个匹配项(如果有的话),并提取regex匹配的第一个捕获组。如果要查找输入字符串中的所有匹配项,请将if
更改为while
循环。
我是不是漏掉了什么?提前感谢!
我正在为我的 REST API 控制器编写测试,我需要检查返回的 对象中的 值,请参阅此测试方法: 但是测试产生了这个错误: 似乎ID被正确返回,但被序列化为不同的结构。 我的代码有什么问题?
我们现在把注意力转向使用栈解决真正的计算机问题。你会这么写算术表达式 (5+6)*(7+8)/(4+3) 其中括号用于命令操作的执行。你可能也有一些语言的经验,如 Lisp 的构造 (defun square(n) (* n n)) 这段代码定义了一个名为 square 的函数,它将返回参数的 n 的平方。 Lisp 使用大量的圆括号是臭名昭著的。 在这两个例子中,括号必须以匹配的方式
问题内容: 代码: 错误: 我在这里做错了什么? 问题答案: 你需要调用的,然后才能调用和相关的功能,大约匹配的文本查询或操纵它(,,等)。 因此,在您的情况下: 这将找到第 一个 匹配项(如果有),并提取由正则表达式匹配的第一个捕获组。如果要在输入字符串中查找所有匹配项,请更改为循环。
最近,我为jaxb生成的元素做了一个自定义匹配器,遇到了这样的场景: 先决条件: 我有一个自定义Matcher,它扩展了BaseMatcher,覆盖了方法describeTo和DescribeMatch(当然还有matches…) 我使用的是assertThat(actualObject,而不是MyMatcherStaticRunMethod(expectedObject)) 当断言失败时,结果是
就Spring security而言,它对我来说是全新的。我在网上找到了许多描述如何设置基本安全性的资源,并且能够让HTTPS REST调用在服务器端使用以下配置: 在我看来,这段代码允许访问路径及其下的任何内容,但似乎恰恰相反。我错过了什么? 注意:我要提到的另一件事是,目前没有“用户”身份验证。“客户端”不是基于web的,而是一个单独的Spring Boot服务,它有自己的客户端安全配置。 更