I need help putting together a regex that will match word that ends with "Id" with case sensitive match.
How about "\A[a-z]*Id\z"? [This makes characters before 'Id' optional. Use "\A[a-z]+Id\z" if there needs to be one or more characters preceding "Id."]
Regex ids = new Regex(@"\w*Id\b", RegexOptions.None);
"\b" means "word break" & \w mean any word character, so \w*Id\b means "{stuff}Id". By not including RegexOptions.IgnoreCase, it will be case sensitive.
Try this regular expression:
\w*Id\b
\w*
allows word characters in front of Id
and the \b
ensures that Id
is at the and of the word (\b
is word boundary assertion).
I would use
\b[A-Za-z]*Id\b
The \b matches the beginning and end of a word i.e. space, tab or newline, or the beginning or end of a string.
The [A-Za-z] will match any letter, and the * means that 0+ get matched. Finally there is the Id.
Note that this will match words that have capital letters in the middle such as 'teStId'.
I use http://www.regular-expressions.info/ for regex reference
This may do the trick:
\b\p{L}*Id\b
Where \p{L}
matches any (Unicode) letter and \b
matches a word boundary.
Gumbo gets my vote, however, the OP doesn't specify whether just "Id" is an allowable word, which means I'd make a minor modification:
\w+Id\b
1 or more word characters followed by "Id" and a breaking space. The [a-zA-Z] variants don't take into account non-English alphabetic characters. I might also use \s instead of \b as a space rather than a breaking space. It would depend if you need to wrap over multiple lines.