用于Javascript的正则表达式
我正在学习一些基本的Javascript正则表达式。作为初学者,我阅读了文档和这个问题: 我想我已经破译了大部分的表达:用于Javascript的正则表达式,javascript,regex,Javascript,Regex,我正在学习一些基本的Javascript正则表达式。作为初学者,我阅读了文档和这个问题: 我想我已经破译了大部分的表达: /(?:^|\s)format_(.*?)(?:\s|$)/g 除本部分外: (.*?) 我知道 .* 匹配除换行符或换行符外的任何字符的0个或多个匹配项 但我不明白为什么 ? 这是需要的 我在玩类似的东西: /(?:^|\s)ab(.*?)ab(?:\s|$)/ ' ab4545ab ' 不管有没有这种情况,情况都是一样的 ? 在 有什么想法吗 谢谢 它使。*
/(?:^|\s)format_(.*?)(?:\s|$)/g
除本部分外:
(.*?)
我知道
.*
匹配除换行符或换行符外的任何字符的0个或多个匹配项
但我不明白为什么
?
这是需要的
我在玩类似的东西:
/(?:^|\s)ab(.*?)ab(?:\s|$)/
' ab4545ab '
不管有没有这种情况,情况都是一样的
?
在
有什么想法吗
谢谢 它使。*不贪婪。这意味着正则表达式中下一个有效字符序列的第一次出现将停止。*
如果没有?,.*将一直使用到正则表达式中下一个有效字符序列的最后一次出现
var s = "foo bar boo bar foo";
var greedy = /.*bar/;
var no_greed = /.*?bar/;
greedy.exec(s); // foo bar boo bar
no_greed.exec(s); // foo bar
所以贪婪的人会从第一个吧台到最后一个吧台
非贪婪只进入第一个栏。它使。*非贪婪。这意味着正则表达式中下一个有效字符序列的第一次出现将停止。*
如果没有?,.*将一直使用到正则表达式中下一个有效字符序列的最后一次出现
var s = "foo bar boo bar foo";
var greedy = /.*bar/;
var no_greed = /.*?bar/;
greedy.exec(s); // foo bar boo bar
no_greed.exec(s); // foo bar
所以贪婪的人会从第一个吧台到最后一个吧台
非贪心的只会进入第一个栏。?在.+或.*匹配之后,将使匹配变为懒惰,而不是默认的贪婪。也就是说,它将匹配尽可能少的字符,而不是尽可能多的字符
例如:
"hello".match(/.+/) //Returns ["hello"]
"hello".match(/.+?/) //Returns ["h"]
那个?在.+或.*匹配之后,将使匹配变为懒惰,而不是默认的贪婪。也就是说,它将匹配尽可能少的字符,而不是尽可能多的字符
例如:
"hello".match(/.+/) //Returns ["hello"]
"hello".match(/.+?/) //Returns ["h"]
那个?使量词不发音。如果没有它,*将吃掉尽可能多的字符,这在..中尤其强大。。但是,有什么??在那里,它会吃尽可能少的食物
以这个字符串为例:abcccbacba,并将其与/abc.*.ba/匹配。这将导致捕获ccbac。另一方面,/abc.*?ba/将捕获cc.的?使量词不发音。如果没有它,*将吃掉尽可能多的字符,这在..中尤其强大。。但是,有什么??在那里,它会吃尽可能少的食物
以这个字符串为例:abcccbacba,并将其与/abc.*.ba/匹配。这将导致捕获ccbac。另一方面,/abc.*?ba/将捕获cc.在该上下文中,问号意味着进行惰性匹配。一定要阅读此-很棒的教程、有用的示例和所有要点:,尤其是@Joanna:感谢这些链接。他们帮了很多忙。在阅读了答案后,我仍然感到困惑,但当然他们都会为我指明正确的方向,但在阅读了你的链接后,他们都有意义。我希望你能将此作为一个答案发布。在这种情况下,问号意味着做一个懒散的匹配。一定要阅读此-很棒的教程,有用的例子和所有要点:,尤其是@Joanna:感谢这些链接。他们帮了很多忙。在阅读了答案后,我仍然感到困惑,但当然他们都会为我指明正确的方向,但在阅读了你的链接后,他们都有意义。我希望你能把这个贴出来作为答案。