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

Wal*_*ker 244 regex

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

正则表达式: 我买了_____只羊.

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

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

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

Tim*_*ker 257

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

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

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

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

  • `.``与`\n`不匹配,但它匹配一个只包含`\n`的字符串,因为它匹配0个字符. (5认同)
  • `(?s).*` 对我有用,匹配所有内容,包括新行 (2认同)

小智 156

(.*?) 匹配任何东西 - 我已经使用它多年了.

  • 但那是否与换行符相符? (51认同)
  • 在Javascript中,使用`[\ s\S]*`或`[^]*`. (5认同)
  • 这似乎不包括新行或尾随句号。我发现这个轻微的改变影响了一切(?s)。* (2认同)

Tyl*_*ler 84

选择并记住以下1项内容!:)

[\s\S]*
[\w\W]*
[\d\D]*
Run Code Online (Sandbox Code Playgroud)

说明:

\s:空白\S:不是空白

\w:字\W:不是字

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

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




奖金编辑:

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

[^\n]+
Run Code Online (Sandbox Code Playgroud)

说明:

^:没有

\n: 越线

+:1个字符或更多


Mik*_*aev 17

试试这个:

I bought (.* )?sheep
Run Code Online (Sandbox Code Playgroud)

甚至

I bought .*sheep
Run Code Online (Sandbox Code Playgroud)


小智 12

因为.查找单个字符,换行符或行终止符除外。

因此,要匹配任何内容,您可以像这样使用: (.|\n)*?

希望能帮助到你!


Sam*_*ert 8

/.*/如果没有换行符,效果很好。如果它必须匹配换行符,这里有一些解决方案:

解决方案 描述
/.*/s /s(dot all flag) 使.(通配符)匹配任何内容,包括换行符。输入一个*(星号),它将匹配所有内容。阅读更多
/[\s\S]*/ \s(空白元字符)将匹配任何空白字符(空格;制表符;换行符;...),并且\S(与 相反\s)将匹配任何不是空白字符的内容。*(星号)将匹配所有出现的字符集(由 封装[])。阅读更多

  • 你又帮我节省了近 48 个小时的搜索时间 (2认同)

Cuo*_*goc 7

如果您使用 JavaScript,ES2018 添加了/s(dotAll) 标志。使用/s标志时,点将.匹配任何字符,包括换行符。

console.log("line_1\nline_2".match(/.+/s))
Run Code Online (Sandbox Code Playgroud)

注意:并非所有浏览器都支持它。


Jos*_*osh 6

使用.*,并确保您使用的实现相当于单行,因此您将匹配在线结尾.

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