我使用正则表达式进行查找和替换,我希望尽可能使用最佳实践。
我理解+
和*
字符之间的区别。 reference *
会找到指定词组的所有匹配项,+
将找到除指定词组的最后一个实例以外的所有匹配项。
话虽这么说,当我在互联网上查找正则表达式短语时,我看到很多人使用+
我觉得他们可以使用*
。标准是在通用正则表达式短语上使用+
而不是*
,还是有一些我缺少的约定?
答案 0 :(得分:3)
我认为你对这些角色的含义没有正确的概念。 *
只是意味着匹配指定的前一项(通常是单个字符,字符类或带括号的子模式)0次或更多次。这意味着您可以在匹配的字符串中出现该项目的任意数量。
+
几乎完全相同。
所以区别在于:
* - match 0 or more times
+ - match 1 or more times
没有最佳做法,因为每个都应该适当使用。
答案 1 :(得分:2)
您链接的网站很棒,但您误解了*
和+
的定义。基本上,*
表示“零或更多”,+
表示“一个或多个”。
换句话说:
X*
表示“连续数字X
个字符,或者根本不存在。”X+
表示“一行中有X
个字符,但至少有一个。”因此X+
相当于XX*
(甚至X*X
)。它们都有无限的上限,但下限不同。
至于哪一个是标准/最佳实践,答案是“既不”,因为它们都有不同的含义。但是,如果您尝试匹配某个或多个内容,最好使用X+
而不是XX*
。两者都是正确的,但第一个更短,更易读。
答案 2 :(得分:0)
正则表达式根据其使用的语言而有所不同,但您似乎使用了*
和+
的错误定义。
*
与{0,}
相同(零次或多次)
+
与{1,}
(一次或多次)相同
答案 3 :(得分:0)
“在通用正则表达式短语上使用+而不是*是标准还是我缺少一些惯例?”
不,不。有些人写错了正则表达式,有些人不需要区分,有些人说得对。没有特别的约定要遵守。
正如zzzzBov指出的那样,无论如何,你对*和+意味着什么的理解似乎都是错误的。
答案 4 :(得分:0)
在标准正则表达式中,+
表示“前面一个或多个令牌”,而*
表示“前面一个或多个令牌”。
[0-9]+
表示“一个或多个数字”。
[0-9]*
表示“零或更多数字”。