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之前添加一个斜杠-在提供了您的用例之后,我能够进一步简化它。见我的修正案。