I have read that to match a word inside of a string using Regular expressions (in .NET), I can use the word boundary specifier (\b) within the regex. However, none of these calls result in any matches
Regex.Match("INSERT INTO TEST(Col1,Col2) VALUES(@p1,@p2)", @"\b@p1\b");
Regex.Match("INSERT INTO TEST(Col1,Col2) VALUES(@p1,@p2)", @"\bINSERT\b");
Is there anything I am doing wrong ?
EDIT: The second one is already working 😉
Update: As another answer pointed out,
@is not a word character so there is no word boundary between@and space. As a workaround, you could instead use a negative lookbehind:Original answer: You need a
@in front of your regular expressions:Without this, the string “\b” is interpreted as a backspace (character 8), not a regular expression word boundary. There is more information about @-quoted string literals on MSDN.
An alternative way without using @-quoted string literals is to escape your backslashes: