首页 文章

正则表达式 - 匹配任何东西

提问于
浏览
186

如何使表达式绝对匹配任何东西(包括空格)?
例:

Regex: 我买了_____只羊 .

Matches: 我买了羊 . 我买了一只羊 . 我买了五只羊 .

我尝试使用 (.*) ,但这似乎不起作用 .

更新:我得到它的工作,显然问题不在于正则表达式,只是( . )字符被转义 .

8 回答

  • 0

    通常,点匹配除换行符之外的任何字符 .

    因此,如果 .* 不起作用,请设置"dot matches newlines, too"选项(或使用 (?s).* ) .

    如果你"dotall"有"dotall"选项,请尝试 [\s\S]* . 这意味着"match any number of characters that are either whitespace or non-whitespace" - 有效"match any string" .

    另一个仅适用于JavaScript(并且不被任何其他正则表达式风格识别)的选项是 [^]* ,它也匹配任何字符串 . 但 [\s\S]* 似乎被更广泛地使用,也许是因为它更便携 .

  • 212

    (.*?) 匹配任何东西 - 我多年来一直在使用它 .

  • 66

    Choose & memorize 1 of the following!!! :)

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

    Explanation:

    \s :whitespace \S :不是空格

    \w :字 \W :不是字

    \d :digit \D :不是数字

    (如果您想要1个或更多字符[而不是0个或更多],可以将 * 替换为 + ) .

    BONUS EDIT:

    如果您想在一行中匹配所有内容,可以使用:

    [^\n]+
    

    Explanation:

    ^ :没有

    \n :linebreak

    + :1个字符或更多

  • 0

    试试这个:

    I bought (.* )?sheep
    

    甚至

    I bought .*sheep
    
  • 114

    使用 .* ,并确保您使用的实现等效于单行,因此您将匹配 line endings .

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

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

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

  • 0

    (.*?) 对我不起作用 . 我正在尝试匹配 /* */ 所包含的注释,这些注释可能包含多行 .

    试试这个:

    ([a]|[^a])
    

    此正则表达式匹配 aanything else expect a . 绝对地,它意味着匹配一切 .

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

    感谢@mpen更简洁的方式 .

    [\s\S]
    
  • 11

    对于JavaScript,最好和最简单的答案似乎是/.*/ .

    正如其他人所建议的那样/( . ?)/也会起作用,但/./更简单 . 我可以看到模式内的(),也不需要结尾?绝对匹配任何东西(包括空字符串)

    NON-解决方案:

    / [\ s \ S] /不匹配空字符串,所以它不是解决方案 .

    / [\ s \ S] * / DOES也匹配空字符串 . 但它有一个问题:如果你在代码中使用它,那么你就不能注释掉这样的代码,因为'* /'被解释为注释结束 .

    /([\ s \ S] )/工作,没有评论问题 . 但它比/./更长,更复杂 .

相关问题