Regex 为什么\d*匹配位置?

Regex 为什么\d*匹配位置?,regex,Regex,假设我有字符串“,这是一个例子,我试着将它与/\d*/匹配,我的假设是整个字符串都匹配,但我收到的唯一匹配是位置(在t之前,t和h之间,等等) 为什么会发生这种情况?\d表示“任何数字”;*表示“零或更多” 所以在本例中,它匹配正则表达式中的每个位置,因为它本质上是“不匹配任何内容,或者如果有的话匹配数字” 我不知道为什么您会认为\d*会匹配一个非数字字符串…\d是数字的占位符(无法与字母匹配)。您应该使用\D或者您想表达一些不同的东西。因为,在“这是一个示例”中 在“t”之前有0个或更多数字

假设我有字符串“
,这是一个例子,我试着将它与
/\d*/
匹配,我的假设是整个字符串都匹配,但我收到的唯一匹配是位置(在
t
之前,
t
h
之间,等等)

为什么会发生这种情况?

\d
表示“任何数字”;
*
表示“零或更多”

所以在本例中,它匹配正则表达式中的每个位置,因为它本质上是“不匹配任何内容,或者如果有的话匹配数字”


我不知道为什么您会认为
\d*
会匹配一个非数字字符串…

\d
是数字的占位符(无法与字母匹配)。您应该使用
\D
或者您想表达一些不同的东西。

因为,在“这是一个示例”中

  • 在“t”之前有0个或更多数字
  • 在“t”和“h”之间有0个或更多数字
  • 在“h”和“i”之间有0个或更多数字

明白了吗?

\d代表数字,因此\d*代表数字或无。没有任何匹配项。\d是数字/\d*/是一行中的许多数字。我很惊讶你能找到匹配的/(\w+\s?)/将至少匹配每个单词。@lynxlynx“任何地方都不匹配”是什么意思“Everywhere”也指单词,对吗?没有什么也称为“空字符串”,任何字符串中都有很多(长度+1)。@daremarkovic-这不是很明显吗?“bar=(“b+”+“ar”)或(“bar+”+“r”)甚至(“bar+”)在正则表达式中“nothing”是如何定义的?nothing基本上是单词边界和字符之间的位置吗?@daremarkovic“nothing”是字符之间的任何位置。如果需要,单词边界是“nothing”的特殊类型。