【问题标题】:Regex for java's String.matches method?java的String.matches方法的正则表达式?
【发布时间】:2010-12-10 02:22:47
【问题描述】:

基本上我的问题是这样的,为什么是:

String word = "unauthenticated";
word.matches("[a-z]");

返回假? (java1.6开发)

基本上我想看看传递给我的字符串是否包含字母字符。

【问题讨论】:

    标签: java regex string


    【解决方案1】:

    String.matches() 函数将您的正则表达式与 整个 字符串匹配(就好像您的正则表达式在开头有 ^,在结尾有 $)。如果要在字符串中的某处搜索正则表达式,请使用Matcher.find()

    正确的方法取决于你想做什么:

    1. 检查您的输入字符串是否完全由字母字符组成(String.matches()[a-z]+
    2. 检查您的输入字符串是否包含任何个字母字符(可能还有一些其他字符)(Matcher.find()[a-z]

    【讨论】:

      【解决方案2】:

      您的代码正在检查单词是否匹配一个字符。您要检查的是单词是否匹配任意数量的字母字符,如下所示:

      word.matches("[a-z]+");
      

      【讨论】:

      • 我以前从未在任何示例中看到 + 符号。由于某种原因,java 不喜欢我使用 *,但 + 正在工作。谢谢。
      • @Shaun,+ 表示 1 个或多个前面的元素。
      • @Shaun83 - Java / java 正则表达式使用* 而不是+ 也没有问题。也许你正在失去它...... :-)
      • 线程“main”中的异常 java.util.regex.PatternSyntaxException:在索引 0 附近悬挂元字符 '*'。我一定是把它放在了错误的地方,尽管它对其他正则表达式有效。
      • 扩展@AlanMoore 的评论,* 不匹配任何字符,它匹配前面的字符零次或多次。如果它在正则表达式的开头,则没有前面的字符,因此它位于错误的位置。要匹配开头,您需要使用“.*”之类的内容,其中点匹配任何(可打印?)字符。
      【解决方案3】:

      [a-z] 你算一个字符。

      您可能正在寻找的是[a-z]*

      【讨论】:

        猜你喜欢
        • 2013-03-21
        • 2011-06-13
        • 2020-12-14
        • 1970-01-01
        • 2012-02-13
        • 2015-12-29
        • 2018-05-03
        • 1970-01-01
        相关资源
        最近更新 更多