正则表达式匹配空格或无

时间:2013-03-04 17:33:26

标签: java regex

我有JTextPane,其中“int”字为蓝色。这样的正则表达式是错误的,因为它也会着色“打印”:

int + "(\\[\\])*" //To match eg. int[]

所以我想到了这样的正则表达式:

"\\s" + int + "(\\[\\])*"

如果用户在文本窗格中将int作为第一个输入,那么它没关系但不起作用。如何解决这个问题呢?是否有一些符号为NOTHING?所以我可以做:\ s | NOTHING

3 个答案:

答案 0 :(得分:5)

只需匹配word boundaries, which are matched by \b所包围的int。模式:

"\\bint\\b"

更多阅读the always-excellent regular-expressions.info

答案 1 :(得分:1)

你想要一个可选空间吗?那将是\\s?。或者允许零个或多个空格:\\s*

答案 2 :(得分:1)

我建议使用它:

/\bint\S*/ig

不完全确定如何转换为Java,但字符串部分将如下所示:

"\\bint\\S*"

正则表达式转换为:

在单词边界后面找到“int”,捕获它和其他任何东西直到空白字符。

它允许你匹配

int[]
int()
interesting
int!@#$%^&*()_+~=-

等等。

如果你只想捕获int[], int()之类的东西,那么正则表达式显然会有所不同。