是什么导致我的Java`.matches()`regex返回False?

是什么导致我的Java`.matches()`regex返回False?,java,regex,Java,Regex,我正在尝试查找字符串中出现的{字符 给定字符串stringa=“{”,为什么a.matches(“\\{”)返回False 我正在尝试按照此处的指南进行操作:。看起来简单匹配部分应该满足我的需要。但它的行为似乎不符合预期。我似乎无法检测到选项卡或{字符 我尝试了.matches(“\\s*\\{”)之类的方法来解释卷发之前的制表符,但仍然失败;即使尝试只匹配制表符(这是字符串中的第一个字符),也会使用表达式.matches(\\s”)报告false 我在这里遗漏了什么?这样试试 String s

我正在尝试查找字符串中出现的
{
字符

给定字符串
stringa=“{”
,为什么
a.matches(“\\{”)
返回False

我正在尝试按照此处的指南进行操作:。看起来简单匹配部分应该满足我的需要。但它的行为似乎不符合预期。我似乎无法检测到
选项卡
{
字符

我尝试了
.matches(“\\s*\\{”)
之类的方法来解释卷发之前的制表符,但仍然失败;即使尝试只匹配制表符(这是字符串中的第一个字符),也会使用表达式
.matches(\\s”)
报告false


我在这里遗漏了什么?

这样试试

String s = "{1,23,abc{{ { {abc";

Pattern pat = Pattern.compile("[^(a-zA-Z0-9)\\s]*?\\{[^(a-zA-Z0-9)\\s]*?");

Matcher mat = pat.matcher(s);

String datu = new String();

    while(mat.find()){


        System.out.println(mat.group());
    }

试试
a.matches(“*\{”)
(或者
a.matches(“(\\t)*\{”)
来处理制表符和空格)检查整个字符串是否与给定的模式匹配。如果您的字符串的前导空格未在正则表达式中说明,则它将不匹配。编辑:第二个字符串实际上应该是
a.matches(“[\\t]*\\{”)
。下面是一个可运行的示例-@aroth”检查整个字符串是否与给定的模式匹配对。这就解释了失败的原因!你的例子非常好用。我希望我能把你的评论勾选为正确的。谢谢你的帮助!