正则表达式中代表任意数量字符的符号是什么?

206

我想知道是否有一个符号可以代表任意数量(包括零个)的字符

5个回答

324
.*

.表示任何字符,*表示重复零次或多次。


2
好的回答,只是想补充一下,在这里看一下:http://download.oracle.com/javase/1.4.2/docs/api/java/util/regex/Pattern.html - Steve
16
一个狡猾的陷阱是,.*不能匹配换行符('\n')。关于这个主题的更多信息,请参见这个问题 - Captain Man

51
您可以使用这个正则表达式(任何空格或任何非空格字符)尽可能多地出现,直到包括0次。
[\s\S]*

这个表达式会尽可能少地匹配,但会在需要时匹配到整个表达式。

[\s\S]*?
例如,在这个正则表达式中 [\s\S]*?B 会匹配 aBaaaaB 中的 aB。但在这个正则表达式中 [\s\S]*B 会匹配 aBaaaaB 中的 aBaaaaB

[\s\S]和.之间有什么区别吗? - linqu
10
@linqu,.有时不会匹配\n(换行符),这取决于多行选项,但[\s\S]将匹配任何字符。 - agent-j

29
你是指什么?
.*

. 点号匹配除换行符以外的任何字符,启用 dotall 模式后也包括换行符

* 匹配前一个表达式任意次,包括 0 次


6
我会使用.*。其中.匹配任何字符,*表示0个或多个出现次数。您可能需要使用DOTALL开关来捕获带有.的换行符。

-9

是的,有一个符号,它就是星号:*

a* // looks for 0 or more instances of "a"

这应该在任何你查阅的Java正则表达式教程或文档中都有涉及。


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