Regular expression to find 3 repeated words
c#, regex
Solution
This should do the trick:
^(\w+),\1,\1$
Explanation:
`^`: beginning of the line. Needed to avoid matching "HHEY,HEY,HEY".
`(\w+)`: matches one or more word characters. This is the first catpured group.
`,`: the character comma.
`\1`: a backreference to the first captured group. In the other words, matches whatever was matched in `(\w+)` before.
`,`: the character comma.
`\1`: a backreference to the first captured group.
`$`: end of the line. Needed to avoid matching "HEY,HEY,HEYY".
Source: https://msdn.microsoft.com/en-us/library/az24scfc(v=vs.110).aspx#Anchor_5
Example usage
static void Main()
{
var threeWords = new Regex(@"^(\w+),\1,\1$");
var lines = new[]
{
"HEY,HEY,HEY",
"NO,NO,NO",
"HEY,HI,HEY",
"HEY,H,Y",
"HEY,NO,HEY",
"HHEY,HEY,HEY",
"HEY,HEY,HEYY",
};
foreach (var line in lines)
{
var isMatch = threeWords.IsMatch(line) ? "" : "no ";
Console.WriteLine($"{line} - {isMatch}match");
}
}
Output:
HEY,HEY,HEY - match
NO,NO,NO - match
HEY,HI,HEY - no match
HEY,H,Y - no match
HEY,NO,HEY - no match
HHEY,HEY,HEY - no match
HEY,HEY,HEYY - no match
Problem
I'm trying to create a regular expression which matches the same word 3 times, they are separated by a comma. For example, some inputs would be: ``` HEY,HEY,HEY - match NO,NO,NO - match HEY,HI,HEY - no match HEY,H,Y - no match HEY,NO,HEY - no match ``` How can I go about doing this? I've had a look at some example but they are only good for characters, not words.