我经常使用正则表达式进行查找和替换,并且我想尽可能地使用最佳实践。
我理解 the+和*characters 之间的区别。reference *将查找指定短语的所有匹配项,+并将查找除指定短语的最后一个实例之外的所有匹配项。
话虽如此,当我在互联网上查找正则表达式短语时,我看到很多人在使用+我认为他们可以使用的地方*。是使用标准+而不是*通用正则表达式短语还是我缺少一些约定?
我认为您对这些字符的含义没有正确的概念。简单的*意思是匹配指定的前项(通常是单个字符、字符类或带括号的子模式)0 次或多次。这意味着您可以在匹配的字符串中多次出现该项目。
+除了字符/子模式必须发生 1 次或多次之外,几乎完全相同。
所以区别在于:
* - match 0 or more times
+ - match 1 or more times
没有最佳实践,因为每个都应酌情使用。
您链接到的网站很棒,但是您误解了*和的定义+。本质上,*意思是“零个或多个”,+意思是“一个或多个”。
换句话说:
X*意思是“连续任意数量的X字符,或者可能根本没有。 ”X+意思是“连续任意数量的X字符,但至少一个。 ”所以X+等价于XX*(甚至X*X)。它们都有无限的上限,但下限不同。
至于哪个是标准/最佳实践,答案是“都不是”,因为它们都有不同的含义。但是,如果您尝试匹配一项或多项内容,最好X+使用XX*. 两者都是正确的,但第一个更短且更具可读性。
正则表达式根据使用的语言而有所不同,但您似乎对*and使用了错误的定义+。
*与{0,}(零次或多次)
+相同 与{1,}(一次或多次)相同
“在通用正则表达式短语上使用 + 而不是 * 的标准是标准,还是我缺少一些约定?”
没有也没有。有些人写的正则表达式不好,有些人不需要区分,有些人做对了。没有什么特别的约定可以遵守。
然而,正如 zzzzBov 所指出的,无论如何,您对 * 和 + 含义的理解似乎都是不正确的。
在标准正则表达式中,+表示“一个或多个前面的标记”,而*表示“零个或多个前面的标记”。
[0-9]+例如,表示“一位或多位数字”。
[0-9]*另一方面,表示“零个或多个数字”。