Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

Tags:

regex

pcre

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.

like image 522
Hao Wu Avatar asked Jan 24 '23 09:01

Hao Wu


1 Answers

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

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

Demo

like image 146
Michail Avatar answered Feb 07 '23 01:02

Michail