What does ?: do in regex

前端 未结 3 1200
北荒
北荒 2021-01-01 11:05

I have a regex that looks like this

/^(?:\\w+\\s)*(\\w+)$*/

What is the ?:?

相关标签:
3条回答
  • 2021-01-01 11:17

    It means only group but do not remember the grouped part.

    By default ( ) tells the regex engine to remember the part of the string that matches the pattern between it. But at times we just want to group a pattern without triggering the regex memory, to do that we use (?: in place of (

    0 讨论(0)
  • 2021-01-01 11:26

    It indicates that the subpattern is a non-capture subpattern. That means whatever is matched in (?:\w+\s), even though it's enclosed by () it won't appear in the list of matches, only (\w+) will.

    You're still looking for a specific pattern (in this case, a single whitespace character following at least one word), but you don't care what's actually matched.

    0 讨论(0)
  • 2021-01-01 11:33

    Further to the excellent answers provided, its usefulness is also to simplify the code required to extract groups from the matched results. For example, your (\w+) group is known as group 1 without having to be concerned about any groups that appear before it. This may improve the maintainability of your code.

    0 讨论(0)
提交回复
热议问题