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

时间:2012-12-02 23:53:00

标签: regex .htaccess

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

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

有可能吗?

3 个答案:

答案 0 :(得分: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 :(得分:1)

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

(.+)

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

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

答案 2 :(得分:1)

首先查看字符类

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

一个例子:

[A-Za-z_0-9]*

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

您可以将所需的标点符号添加到该组中。

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

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

\S*