正则expression式 – 匹配任何东西

我如何使expression式匹配绝对的东西(包括空格)? 例:

正则expression式:我买了_绵羊。

比赛:我买了羊。 我买了一只羊。 我买了五只羊。

我尝试使用(。*),但似乎并没有工作。

更新:我得到它的工作,显然这个问题不是正则expression式,只是(。)字符被转义。 无论如何感谢人。

通常点匹配除了换行符之外的任何字符。

因此,如果.*不起作用,请设置“点匹配换行符”选项(或使用(?s).* )。

如果您使用的JavaScript没有“dotall”选项,请尝试[\s\S]* 。 这意味着“匹配任何数量的空格或非空白字符” – 有效地“匹配任何string”。

另一个只适用于JavaScript的选项(不能被任何其他正则expression式识别)是[^]* ,它也与任何string匹配。 但是[\s\S]*似乎被广泛使用,可能是因为它更便携。

(。*?)匹配任何东西 – 我已经使用了好几年了。

select并记住下面的1个! 🙂

 [\s\S]* [\w\W]* [\d\D]* 

说明:

\s :空格\S :不是空格

\w :单词\W :不是单词

\d :数字\D :不是数字

(如果你想要1个或更多的字符而不是0或更多,你可以把*换成+ )。

奖金编辑:

如果你想在一行上匹配所有的东西,你可以使用这个:

 [^\n]+ 

说明:

^ :不是

\n :换行符

+ :1个字符以上

尝试这个:

 I bought (.* )?sheep 

甚至

 I bought .*sheep 

使用.* ,并确保您使用的是您的实现等价的单行,所以你会匹配行结束

这里有一个很好的解释 – > http://www.regular-expressions.info/dot.html

 <?php $str = "I bought _ sheep"; preg_match("/I bought (.*?) sheep", $str, $match); print_r($match); ?> 

http://sandbox.phpcode.eu/g/b2243.php

(.*?)不适用于我。 我试图匹配包含/* */可能包含多行的注释。

尝试这个:

 ([a]|[^a]) 

这个正则expression式匹配aanything else expect a 。 当然,这意味着匹配一切。

顺便说一句,在我的情况下, /\*([a]|[^a])*/匹配C风格的评论。

感谢@mpen一个更简洁的方法。

 [\s\S]