Regex Difference: (\W+)? and (\W*)

Regex Difference: (\W+)? and (\W*)

Is there any difference between (\w+)? and (\w*) in regex?

It seems the same, doesn't it?

3

1 Answer

(\w+)? and (\w*) both match the same (0..+inf word characters)

However, there is a slight difference:

In the first case, if this part of the regex matches "", the capturing group is absent. In the second case, it is empty. In some languages, the former manifests as a null while the latter should always be "".

In Javascript, for example,

/(\w*)/.exec("")  // ["", ""]
/(\w+)?/.exec("") // ["", undefined]

In PHP (preg_match), in the former case, the corresponding key is simply absent in the matches array:

4

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Alexander Ross
Author

Alexander Ross

Alexander Ross has covered the video game industry for a decade, writing deep dives on game design, esports tournaments, VR developments, and gaming culture.