Regex 正则表达式-匹配任何内容
如何使表达式完全匹配任何内容(包括空格)Regex 正则表达式-匹配任何内容,regex,Regex,如何使表达式完全匹配任何内容(包括空格)示例: 正则表达式:我买了羊 火柴:我买了羊。我买了一只羊。我买了五只羊 'I bought sheep. I bought a sheep. I bought five sheep.'.match(/I bought(.*)sheep./)[1]; 我尝试使用(.*),但似乎不起作用。尝试以下方法: I bought (.* )?sheep ([a]|[^a]) 甚至 I bought .*sheep 通常,点与除换行符以外的任何字符匹配 因此,
示例: 正则表达式:我买了羊 火柴:我买了羊。我买了一只羊。我买了五只羊
'I bought sheep. I bought a sheep. I bought five sheep.'.match(/I bought(.*)sheep./)[1];
我尝试使用(.*)
,但似乎不起作用。尝试以下方法:
I bought (.* )?sheep
([a]|[^a])
甚至
I bought .*sheep
通常,点与除换行符以外的任何字符匹配 因此,如果
*
不起作用,请设置“点也匹配换行符”选项(或使用(?s)。*
)
如果您使用的JavaScript没有“dotall”选项,请尝试
[\s\s]*
。这意味着“匹配任意数量的空白或非空白字符”——实际上是“匹配任意字符串”
另一个仅适用于JavaScript的选项是
[^]*
,它也与任何字符串匹配。但是[\s\s]*
似乎被更广泛地使用,可能是因为它更便于携带。使用*
,并确保您使用的是实现的等效单行,以便在行结尾上匹配
这里有一个很好的解释->
(.*)
与任何东西都匹配-我已经使用它很多年了。(.*)
对我不起作用。我正在尝试匹配由/***/
包围的注释,这些注释可能包含多行
试试这个:
I bought (.* )?sheep
([a]|[^a])
此正则表达式匹配a
或除a以外的任何内容。当然,这意味着一切都匹配
顺便说一句,在我的情况下,/\*([a].[^a])*/
匹配C风格的注释
感谢@mpen提供了更简洁的方式
[\s\S]
选择并记住以下内容之一!!!:)强>
说明:
[\s\S]*
[\w\W]*
[\d\D]*
\s
:空白\s
:非空白
\w
:word\w
:非word
\d
:数字\d
:非数字
(如果需要1个或多个字符[而不是0个或多个],可以将*
替换为+
)
奖金编辑:
[\s\S]*
[\w\W]*
[\d\D]*
如果要在一行上匹配所有内容,可以使用以下方法:
[^\n]+
说明:
[\s\S]*
[\w\W]*
[\d\D]*
^
:不是
\n
:换行符
+
:对于1个或更多字符的JavaScript,最好和最简单的答案似乎是/.\*/
正如其他人所建议的那样,/(.*)/
也可以,但/。\*/
更简单。就我所见,模式中的()
是不需要的,也不需要结尾?
来完全匹配任何内容(包括空字符串)
非解决方案:
[\s\S]*
[\w\W]*
[\d\D]*
/[\s\s]/
与空字符串不匹配,因此它不是解决方案
/[\s\s]\*/
也与空字符串匹配。但是它有一个问题:如果你在代码中使用它,那么你不能注释掉这样的代码,因为*/
被解释为注释结束
/([\s\s]\*)/
工作正常,没有注释问题。但是它比/.*/
更长,更复杂,因为
只找到一个字符,除了换行符或行结束符
因此,要匹配任何内容,您可以这样使用:(.|\n)*?
希望有帮助 我建议使用/(?=.*)/g
示例
const text1 = 'I am using regex';
/(?=.*regex)/g.test(text1) // true
const text2 = 'regex is awesome';
/(?=.*regex)/g.test(text2) // true
const text3 = 'regex is util';
/(?=.*util)(?=.*regex)/g.test(text3) // true
const text4 = 'util is necessary';
/(?=.*util)(?=.*regex)/g.test(text4) // false because need regex in text
用于测试老实说,很多答案都是旧的,因此我发现,如果您只需使用“/.*/i”测试任何字符串,而不考虑字符内容,就可以得到所有答案 如果您使用的是JavaScript,ES2018将添加/s
(dotAll)标志。使用/s
标志,点
将匹配任何字符,包括换行符
console.log(“line_1\nline_2.match(+/.++/s))
2018规范提供了(别名:dotAll),因此
将匹配任何字符,包括换行符:
const regExAll=/.*/s//注意“s”
设str=`
一切
在这个
一串
将
是
匹配。包括空格(偶数换行符)。
`;
log(`Match:`,regExAll.test(str))//真的
log(`Index Location:`,str.search(regExAll));
如果没有换行符,让newStr=str.replace(regExAll,“/.*/
非常有效。如果必须匹配换行符,以下是一些解决方案:
解决方案
描述
/.*/s
/s
(点全部标志)使
(通配符)匹配任何内容,包括换行符。加入*
(星号),它将匹配所有内容。
/[\s\s]*/
\s
(空格元字符)将匹配任何空格字符(空格;制表符;换行符;…),而\s
(与\s
相反)将匹配任何非空格字符。*
(星号)将匹配所有出现的字符集(由[]
封装)。
正则表达式:
/I bought.*sheep./
/I bought(.*)sheep./
匹配-整个字符串直到行尾
我买了羊。我买了一只羊。我买了五只羊。
正则表达式:
/I bought.*sheep./
/I bought(.*)sheep./
匹配-整个 字符串,并在()中捕获子字符串,以供进一步使用
我买了羊。我买了一只羊。我买了五只羊。
我买了羊。我买了一只羊。我买了五只羊
使用Javascript/Regex的示例
'I bought sheep. I bought a sheep. I bought five sheep.'.match(/I bought(.*)sheep./)[0];
输出:
“我买了羊。我买了一只羊。我买了五只羊。”
输出:
“羊。我买了一只羊。我买了五只”
*
应该可以。你能粘贴你的实际代码吗?你用什么语言编码?点与换行符不匹配它是n