非常基本的正则表达式,这是什么意思?

时间:2012-06-22 21:50:58

标签: regex

好的,我的一个朋友在一段代码中找到了一个正则表达式,但我根本没有经验。我试图搞清楚,我真的觉得它很基本,但我遇到了麻烦。

表达式为:^(.*?){0,1}>$

所以这是我从各种教程和定义中收集的内容:

  • ^代表“start”,$代表end,因此这些代码必须描述完整的字符串才能被选中。
  • *?是一个懒惰的运算符(意​​思是它首先尝试取0前面的字符,如果不匹配,则需要一个,两个,三个等)。
  • (.*?)所以这必须意味着“尽可能少的角色”。
  • (.*?){0,1}:现在麻烦开始了。 “尽可能少的字符,零次或一次”?
  • ^(.*?){0,1}>$:“尽可能少的字符,零次或一次,字符>然后结束”?

这基本上意味着“选择所有内容,如果>位于字符串的末尾”?我很困惑......如果有人能够对这个问题(我认为非常基本的问题)有所了解,我将不胜感激......

编辑:好的,为了防止误解,在这种情况下使用正则表达式:

.replace(/^(.*?){0,1}>$/,"$1/>");

1 个答案:

答案 0 :(得分:4)

您拥有的内容相当于以下内容:

^(.*)>$

首先写下它的人可能很匆忙,并没有意识到他们在那里放了太多无关紧要的东西。


在澄清您的用例后,请使用:

.replace(/>$/, '/>');

并且它会在结束>标记之前添加斜杠(如果有的话)。


如果您想仅在尚未添加斜杠时添加斜杠,请使用:

.replace(/([^\/])>$/, '$1/>');