正则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]