我正在尝试构建一个正则表达式来匹配单词“Hi”,但不是“Hippopotamus”或“Chipmunk”。
所以我需要一个正则表达式来匹配一个特定的单词,但前提是它本身就是一个单词而不是另一个单词的一部分。
答案 0 :(得分:6)
使用\b
作为单词边界。
/\bHi\b/
答案 1 :(得分:2)
您可以使用单词边界:
\bhi\b
如果是C#:
private void button1_Click(object sender, EventArgs e)
{
var m = Regex.Match(textBox1.Text, @"/\bhi\b/");
if (m.Success)
{
MessageBox.Show("Matched");
}
}
答案 2 :(得分:1)
或者你可以使用
^ Hi $,其中^表示单词的开头和$ end的结尾
仅当Hi在整条线上时才会起作用。
修改强>
该死! :)当然你应该使用单词边界
\ BHI \ B'/ P>
答案 3 :(得分:1)
在'Hi'之前和之后使用单词边界(\ b):
\bHi\b
答案 4 :(得分:0)
我想补充......如果你期望“Hippo”和“chipmunk”可能匹配,那么很明显你期望匹配不区分大小写。这不是默认(不管我的经验)。如果你确实需要不区分大小写的匹配,你需要明确地设置它,作为正则表达式本身的一个标志,即。
/\bhi\b/i
(请注意尾随i
)
...或通过正则表达式引擎的选项,例如在.NET中你会使用像
这样的东西Regex.Match(str, "\bhi\b", RegexOptions.IgnoreCase)