2010-08-10 93 views
3

有人可以解释下面的正则表达式匹配什么?

^.*$ 

谢谢!

+1

看起来好像在http://download-llnw.oracle.com/javase/1.5.0/docs/api/java/util/regex/Pattern.html中有详细介绍。官方文件有什么问题? – 2010-08-10 14:27:57

回答

0

它看起来像它匹配的一切...

+0

这不提供问题的答案。要批评或要求作者澄清,请在其帖子下方留言。 – Ankur 2012-11-15 07:26:54

+0

@Ankur:不同意。它直接*回答这个问题,尽管没有多少解释。严格来说,这也不完全正确,但这并不意味着它不是一个答案。 – Mac 2012-11-15 19:40:17

15

一切。

^ is the beginning of the string. 
. is any character. 
* means 0 or more of said characters. 
$ is the end of the string. 

所以这个正则表达式匹配0个或更多的字符开始和结束一个字符串(这是一切)。

+0

感谢您的解释 – user73829 2010-08-10 14:24:10

+0

+1为一个很好的简单解释 – 2010-08-10 14:26:40

+3

默认情况下,大多数正则表达式实现不会匹配DOT元字符的'\ r'和'\ n'。所以,不是“一切”。 – 2010-08-10 14:29:39

1

它会匹配任何东西。

^表示该行的开始。 $表示行结束。所以这意味着表达式必须匹配它传递的整个字符串。

.将匹配任何单个字符。 *意味着之前的东西可以出现在0到任意次数之间。所以这意味着字符串可以包含任意数量的字符,包括0.

2

它匹配所有空行和非空行。它可以被分解为以下部分:

^ : match the beginning of the line 
. : match any character except newline 
* : match zero or many instances of the match 
$ : match the ending of the line 
1

^ =开始字符串或线的(取决于设置)。

. =任何字符。

* =上一个字符的任意数字。在这种情况下,.

$ =字符串或行结束(取决于设置)。

把它们放在一起,它可以匹配整个字符串或整行,具体取决于多行设置的内容(有关更多信息,请参阅this)。

0

它看起来像匹配包括空字符串在内的所有内容。 。*意味着它匹配所有(周期)0次或更多次(*)。 ^和$是多余的,如果你已经设置了多线标志(不知道它在java中是什么)。