Search code examples
regexpcre

Regex to test if there's a word appeared exactly 2 times


Given a string, test if there's a word appeared exactly two times

Input Pass
apple banana pineapple No
apple banana apple pineapple Yes
apple banana banana pineapple Yes
apple banana apple pineapple apple No
apple banana apple banana Yes
apple banana banana apple pineapple apple Yes

I tried something like this but didn't work :(

^.*(\b\w+\b)(?:(?!\b\1\b).)*\b\1\b(?:(?!\b\1\b).)*$

Any suggestions? I'm using pcre.


Solution

  • Get next word. Stop if it contained exactly 2 times. Loop.

    ^(?*.*?\b(\w+)\b)(?>.*?\b\1\b){2}(?!.*\b\1\b)

    Demo