我如何使一个表达式匹配绝对任何东西(包括空白)?例子:
Regex:我买了_____羊。
火柴:我买了羊。我买了一只羊。我买了五只羊。
我尝试使用(.*),但似乎没有工作。
我如何使一个表达式匹配绝对任何东西(包括空白)?例子:
Regex:我买了_____羊。
火柴:我买了羊。我买了一只羊。我买了五只羊。
我尝试使用(.*),但似乎没有工作。
当前回答
因为。查找单个字符,换行符或行结束符除外。
所以,要匹配任何东西,你可以这样使用:(.|\n)*?
希望能有所帮助!
其他回答
使用.*,并确保您使用的实现相当于单行,以便在行尾匹配。
这里有一个很好的解释-> 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
通常点匹配除换行符以外的任何字符。
因此,如果。*不起作用,设置“点也匹配换行符”选项(或使用(?s).*)。
如果您正在使用JavaScript,它没有“dotall”选项,请尝试[\s\ s]*。这意味着“匹配任意数量的空白或非空白字符”——有效地“匹配任何字符串”。
另一个只适用于JavaScript的选项是[^]*,它也匹配任何字符串。但是[\s\ s]*似乎使用得更广泛,可能是因为它更便于携带。
如果你使用JavaScript, ES2018添加了/s (dotAll)标志。带有/s标志的点。将匹配任何字符,包括换行符。
游戏机log(“line_1 \ nline_2”。match (/ + / s))
注意:目前还不是所有浏览器都支持它。
(.*?)不适合我。我试图匹配注释周围的/* */,其中可能包含多行。
试试这个:
([a]|[^a])
这个正则表达式匹配a或除a之外的任何东西,当然,它意味着匹配所有东西。
顺便说一句,在我的情况下,/\*([a]|[^a])*/匹配C风格的注释。
感谢@mpen提供了一个更简洁的方式。
[\s\S]