java - 为什么这个字符串与这个正则表达式不匹配?

标签 java regex string

我有以下代码:

public class testMatch {

    public static void main(String[] args) {
        String dummyMessage = "asdfasdfsadfsadfasdf 3 sdfasdfasdfasdf";
        String expression = "3";
        if (dummyMessage.matches(expression)){
            System.out.println("MATCH!");
        } else {
            System.out.println("NO MATCH!");
        }

    }
}

我希望这是一次成功的匹配,因为 dummyMessage 包含表达式 3,但当我运行此代码片段时,代码会打印 NO MATCH!

我不明白我做错了什么。

好吧,停止回答! .*3.*有效 这是我在一些实时代码中遇到的问题的过度简化,正则表达式是可配置的,到目前为止,匹配整个字符串一直没问题,我现在必须匹配字符串的一部分,并想知道为什么它不是不工作。

最佳答案

它匹配整个字符串,即像大多数其他正则表达式实现中的 ^3$ 一样。所以 3 不匹配,例如333 或您的字符串。但 .*3.* 可以完成这项工作。

但是,如果您只想测试字符串中是否包含“3”,则根本不需要正则表达式。请改用 dummyMessage.contains(expression)

关于java - 为什么这个字符串与这个正则表达式不匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14360580/

相关文章:

java - 用堆栈覆盖对象 (Java)

regex - 多次匹配的命名捕获(Perl)

正则表达式删除 block 注释也删除 * 选择器

c# - 如何在文本框中使用\n

c++ - 使用指针指向字符串中的某些字符

java字符串值应该在double.valueof(..)中使用

java - solr boost函数的目的

java - 将数组中的整数拆分为单个数字

javascript - 确定正则表达式中的逻辑

python - 如果是空格,如何在不删除分隔符的情况下进行拆分