Regex 非常基本的正则表达式,它是什么意思?
好的,我的一个朋友在一段代码中找到了一个正则表达式,我一点经验都没有。我试图弄明白,我真的认为这是非常基本的,但我有麻烦 表达式是:Regex 非常基本的正则表达式,它是什么意思?,regex,Regex,好的,我的一个朋友在一段代码中找到了一个正则表达式,我一点经验都没有。我试图弄明白,我真的认为这是非常基本的,但我有麻烦 表达式是:^(.*){0,1}>$ 这是我从各种教程和定义中收集到的: ^代表“开始”,而$代表结束,所以它们之间的表达式必须描述完整字符串才能被选择 *?是一个惰性运算符(意味着它首先尝试获取前面字符的0,如果不匹配,则获取1、2、3等) (.*)所以这必须意味着“尽可能少地使用字符” (.*){0,1}:现在麻烦开始了。“取尽可能少的字符,零次还是一次” ^(.*?{0
^(.*){0,1}>$
这是我从各种教程和定义中收集到的:
代表“开始”,而^
代表结束,所以它们之间的表达式必须描述完整字符串才能被选择$
是一个惰性运算符(意味着它首先尝试获取前面字符的0,如果不匹配,则获取1、2、3等)*?
所以这必须意味着“尽可能少地使用字符”(.*)
:现在麻烦开始了。“取尽可能少的字符,零次还是一次”(.*){0,1}
:“尽可能少地使用字符,零次或一次,字符>后跟结尾”^(.*?{0,1}>$
.replace(/^(.*?){0,1}>$/,"$1/>");
您所拥有的等同于以下内容:
^(.*)>$
最初写这篇文章的人可能很匆忙,没有意识到他们在里面放了这么多无关的东西
在阐明您的用例后,只需使用以下内容:
.replace(/>$/, '/>');
.replace(/([^\/])>$/, '$1/>');
它将在结束标记前添加一个斜杠(如果有)
如果要仅在斜杠尚未存在时添加斜杠,请使用以下命令:
.replace(/>$/, '/>');
.replace(/([^\/])>$/, '$1/>');
您所拥有的等同于以下内容:
^(.*)>$
最初写这篇文章的人可能很匆忙,没有意识到他们在里面放了这么多无关的东西
在阐明您的用例后,只需使用以下内容:
.replace(/>$/, '/>');
.replace(/([^\/])>$/, '$1/>');
它将在结束标记前添加一个斜杠(如果有)
如果要仅在斜杠尚未存在时添加斜杠,请使用以下命令:
.replace(/>$/, '/>');
.replace(/([^\/])>$/, '$1/>');
所以它的基本意思是“字符串结尾带>”@brimborium-正确,但它也包括最后一个
之外的所有内容。如果与(?:)
一起使用,肯定是这样。但有时正则表达式不仅用于测试,而且也用于测试。这个正则表达式所做的一切,就是在结束语
@brimborium之前添加一个斜杠-在提供了您的用例之后,我能够进一步简化它。请看我的修正案。它的基本意思是“结尾处带>的字符串”?@brimborium-正确,但它也包括除最后一个
之外的所有内容。如果与(?:)
一起使用,肯定是这样。但有时正则表达式不仅用于测试,而且也用于测试。这个正则表达式所做的一切,就是在结束语
@brimborium之前添加一个斜杠-在提供了您的用例之后,我能够进一步简化它。见我的修正案。