匹配空格或空字符的正则表达式

5

我有一个JTextPane,它会将“int”这个单词标成蓝色。但是这个正则表达式是错误的,因为它也会将“print”标成蓝色:

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

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

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

虽然这样做没有问题,但如果用户在文本框中首先输入int,则无法正常工作。如何解决这个问题?是否有一些代表“什么都没有”的符号?这样我就可以写:\s | NOTHING。


尝试使用"\\bint\\S*",其中\S*允许匹配0个或多个非空格字符,因此可以匹配int()int[]等。 - Shmiddty
3个回答

6

1

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


1
我建议使用这个:

/\bint\S*/ig

不完全确定如何将其翻译成Java,但字符串部分应如下所示:

"\\bint\\S*"

正则表达式的含义是:
找到一个紧跟单词边界后面的 "int",捕获它以及任何其他字符,直到出现一个空格字符为止。
它允许你匹配:
int[]
int()
interesting
int!@#$%^&*()_+~=-

如果您只想捕获int[], int()等内容,正则表达式显然会不同。

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