首页 文章

正则表达式匹配所有数字,字母和标点符号?

提问于
浏览
3

我想要一个可以匹配所有数字,字母和所有标点符号的正则表达式(句号,逗号,问号,感叹号,冒号等) .

字符串必须至少有一个字符长,但可以是任何长度 .

可能吗?

3 回答

  • 2

    试试 \\p{Graph}+\\p{Print}+

    @Test
    public void shouldMatch()
    {
        assertTrue("asdf123ASFD!@#$%^&*()".matches("\\p{Graph}+"));
    }
    
    @Test
    public void shouldMatchWithWhitespaces()
    {
        assertTrue("asdf 123 ASFD !@#$%^&*()".matches("[\\p{Graph}\\s]+"));
    }
    

    你可以在这里获得更多的信息(章节:POSIX字符类(仅限US-ASCII)):

    http://docs.oracle.com/javase/1.4.2/docs/api/java/util/regex/Pattern.html

  • 1

    首先看一下角色类

    http://www.regular-expressions.info/charclass.html

    一个例子:

    [A-Za-z_0-9]*
    

    将匹配ascii中的标准字母和下划线 .

    您可以将所需的标点符号添加到集合中 .

    您可以使用\ w来匹配任何单词字符,并且根据您使用的正则表达式实现,它也可以匹配unicode字符 .

    另一种方法是决定你不想匹配的东西 . 如果要匹配不是空格的字符串,则可以使用

    \S*
    
  • 1

    如果我理解得很好,那应该很容易 . 请试试:

    (.+)
    

    此正则表达式匹配任何字符的一次或多次出现 . 这是匹配(和重用)任何字符串的最简单方法 . 也许你已经知道正则表达式中括号的含义 . 它们用于反向引用,即 . 稍后重用匹配的字符串 .

    点字符表示:除新行之外的任何字符 . 加号,是一个运营商,是贪婪的 . 它表示一个或多个前面的字符串 .

相关问题