【问题标题】:Regex match digits, comma and semicolon?正则表达式匹配数字,逗号和分号?
【发布时间】:2011-07-16 16:19:18
【问题描述】:

什么是匹配仅包含数字 0 到 9、逗号和分号的字符串的正则表达式?我希望像这样在 Java 中使用它:

word.matches("^[1-9,;]$") //Or something like that...

我是正则表达式的新手。

【问题讨论】:

  • 嗯,你已经接近了 - 你认为 1-9 会做什么?
  • 1-9 可能不会匹配 0 到 9 以及 0-9 会,除此之外...
  • 哇,谢谢大家。一定太容易了。

标签: java regex


【解决方案1】:

你几乎有它,你只是漏掉了 0 并忘记了量词。

word.matches("^[0-9,;]+$")

【讨论】:

    【解决方案2】:

    你已经完成了 90% 的路。

    ^[0-9,;]+$

    以克拉开头的^ 表示行首。

    [ 表示一个字符集

    0-9 表示字符 0 到 9,逗号, 表示逗号,分号表示;

    结束的] 表示字符集的结束。

    加号+ 表示必须存在一个或多个“上一个项目”。在这种情况下,这意味着您必须具有先前声明的字符集中的一个或多个字符。

    美元$ 表示行尾。

    【讨论】:

    • 我认为 ^$ 也可以表示任何输入的开始和结束(可以是整个文本文件作为一个长长的字符串),不一定是一行。但是这个特性依赖于正则表达式的实现。
    • 如果有人决定制作一种正则表达式语言,其中 '^$' 表示任何输入,那么为什么还要费心使用点 '.'和星号'*'运营商?我不怀疑有人可能会这样做,但这基本上意味着你不能匹配空行(这很愚蠢)。
    • see this page "因此,本教程中讨论的所有正则表达式引擎都可以选择扩展两个锚点的含义。" ^ 匹配字符串的开头,$ 匹配字符串的结尾。所以让它们匹配一行的开头和结尾是一个选项,但这个选项不是推荐的。
    • @Gab 这似乎专注于 Perl 正则表达式和一些可能被大量使用的兼容“扩展”GNU 特性;但是,远非唯一的方法。事实上,有许多相似但略有不同的方法可以构造“输入字符串”来设置正则表达式。正则表达式匹配的实际机制由生成的 DFA 控制,它(对于那些不知道的人)是一个数学构造,所以“引擎”实际上只能执行一种方式(尽管有错误)。看起来扩展简化了整行的匹配,但代价是难以捕获空行。
    【解决方案3】:

    试试word.matches("^[0-9,;]+$");

    【讨论】:

      【解决方案4】:

      word.matches("^[0-9,;]+$");你快到了

      【讨论】:

        【解决方案5】:

        您当前的正则表达式只会匹配 1 个字符。您需要 *(包括空字符串)或 +(至少一个)来匹配多个字符,并且数字有一个快捷方式:\d(需要在字符串中使用 \\)。

        word.matches("^[\\d,;]+$") 
        

        Pattern 文档非常好:http://download.oracle.com/javase/1.5.0/docs/api/java/util/regex/Pattern.html

        您也可以在线尝试您的正则表达式: http://www.regexplanet.com/simple/index.html

        【讨论】:

          【解决方案6】:
          boolean foundMatch = Pattern.matches("[0-9,;]+", "131;23,87");
          

          【讨论】:

            猜你喜欢
            • 2021-07-31
            • 1970-01-01
            • 1970-01-01
            • 2021-05-31
            • 1970-01-01
            • 1970-01-01
            • 2019-02-03
            • 2011-05-13
            • 2014-02-05
            相关资源
            最近更新 更多