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

3
我需要一个正则表达式,它可以匹配所有数字、字母和所有标点符号(句号、逗号、问号、感叹号、冒号等)。
字符串长度至少为一个字符,但可以超过这个长度。
这可行吗?

1
我们是在讨论Unicode还是ASCII? - Martin Ender
例如,正则表达式应该匹配字符串5,也应该匹配字符串(Here is an example. 12345 !?,.;)吗? - Anderson Green
@m.buettner 不确定,但可能是htaccess。 - Lucas
@AndersonGreen 是的,任意数量的字符。 - Lucas
也许更容易想到哪些不应该匹配... - Dror
显示剩余2条评论
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

如果我理解得正确,这应该很容易。请尝试:

([^\s]+)

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


从问题中并不完全清楚他/她想要匹配什么。但我猜测它不是每个字符。 - Martin Capodici
"字母、数字和任何标点符号字符"...... :) 也许你是对的,但在我看来,考虑到帖子标签中还有“htaccess”,他很可能正在尝试重写。 - freedev

1

首先看一下字符类

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

一个例子:

[A-Za-z_0-9]*

将与ASCII标准字母及下划线匹配的任何内容进行匹配。

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

您可以使用\w来匹配任何单词字符,根据您使用的正则表达式实现,它可能还会匹配Unicode字符。

另一种方法是决定您不想匹配什么。如果您想匹配一串非空格字符,可以使用

\S*

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接