Answers:
通常,点匹配除换行符以外的任何字符。
因此,如果.*
不起作用,请设置“点也匹配换行符”选项(或使用(?s).*
)。
如果您使用的JavaScript没有“ dotall”选项,请尝试[\s\S]*
。这意味着“匹配任意数量的空白或非空白字符”-有效地“匹配任何字符串”。
另一个仅适用于JavaScript的选项(并且不能被任何其他正则表达式识别),[^]*
它也可以匹配任何字符串。但是[\s\S]*
似乎被更广泛地使用,也许是因为它更便携。
.*
不匹配,\n
但会匹配仅包含\n
匹配0字符的字符串。
(?s).*
对我来说,作品与一切都匹配,包括换新线
*
(如/.*(?:)/
),也可以使用regex构造函数(var foo = new RegExp(".*")
)。
(.*?)
匹配任何东西-我已经使用多年了。
("title":".*?")
[\s\S]*
或[^]*
。
w+
还不够,我最终会使用.+
。幸运的是还没有回来咬我。
试试这个:
I bought (.* )?sheep
甚至
I bought .*sheep
请使用.*
,并确保您使用的实现等同于单行,以便匹配行尾。
这里有一个很好的解释-> http://www.regular-expressions.info/dot.html
(.*?)
对我不起作用。我正在尝试匹配包围的注释/* */
,其中可能包含多行。
试试这个:
([a]|[^a])
此正则表达式匹配a
或anything else expect a
。绝对地,这意味着匹配所有内容。
在我的情况下,BTW /\*([a]|[^a])*/
与C样式注释匹配。
感谢@mpen提供更简洁的方法。
[\s\S]
[\s\S]
-匹配空格和非空格。
对于JavaScript,最佳和最简单的答案似乎是/.*/。
正如其他人所建议的那样,/(.*?)/也可以,但是/.*/更简单。据我所知,不需要模式中的(),也不需要结尾?完全匹配任何内容(包括空字符串)
非解决方案:
/ [\ s \ S] /不匹配空字符串,因此不是解决方案。
/ [\ s \ S] * /也匹配空字符串。但这有一个问题:如果在代码中使用它,则无法注释掉此类代码,因为'* /'被解释为注释结束。
/([\ s \ S] *)/有效,并且没有注释问题。但是比/.*/更长,更复杂。
如果您使用JavaScript,则ES2018添加了s(dotAll)标志。带有s
标志的点将.
匹配包括换行符在内的所有字符。
console.log("line_1\nline_2".match(/.+/s))
注意:某些浏览器尚不支持。
2018规范提供了s标志(别名:dotAll),因此.
可以匹配任何字符,包括换行符:
const regExAll = /.*/s; //notice the 's'
let str = `
Everything
in this
string
will
be
matched. Including whitespace (even Linebreaks).
`;
console.log(`Match:`, regExAll.test(str)); //true
console.log(`Index Location:`, str.search(regExAll));
let newStr = str.replace(regExAll,"🐔");
console.log(`Replaced with:`,newStr); //Index: 0
上面的代码可在Chrome中运行,但该s
标记尚未在Firefox中实现,但很快就会实现。
<?php
$str = "I bought _ sheep";
preg_match("/I bought (.*?) sheep", $str, $match);
print_r($match);
?>
我建议使用 /(?=.*...)/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
使用regex101进行测试
.*
应该管用。您可以粘贴您的实际代码吗?