正则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); ?>
(.*?)不适用于我。 我试图匹配包含/* */可能包含多行的注释。
尝试这个:
([a]|[^a])
这个正则expression式匹配a或anything else expect a 。 当然,这意味着匹配一切。
顺便说一句,在我的情况下, /\*([a]|[^a])*/匹配C风格的评论。
感谢@mpen一个更简洁的方法。
[\s\S]