C# 正则表达式匹配一个单词中不包含的一系列字母

C# 正则表达式匹配一个单词中不包含的一系列字母,c#,regex,C#,Regex,这应该是一个相当简单的正则表达式,但我不是这方面的专家。我试图匹配一系列特定的字母,但如果它们是整个单词的一部分,我不希望它们匹配。我只需要捕获STA字母。下面是一个例子: My Regex: [Ss][Tt][Aa] STA -- Should Match sta -- Should Match Start -- Should NOT match sta rt -- Should Match rt sta -- Should M

这应该是一个相当简单的正则表达式,但我不是这方面的专家。我试图匹配一系列特定的字母,但如果它们是整个单词的一部分,我不希望它们匹配。我只需要捕获
STA
字母。下面是一个例子:

My Regex: [Ss][Tt][Aa]

STA         -- Should Match
sta         -- Should Match
Start       -- Should NOT match
sta rt      -- Should Match
rt sta      -- Should Match
rtsta       -- Should NOT Match
有人能帮我吗?这是C#NET正则表达式,如果有关系的话。

使用单词边界
\b
标记:


也可以考虑使用正则表达式选项,如:

new Regex("\bsta\b", RegexOptions.IgnoreCase)

@HenryShen--这不起作用,Henry,因为我的
STA
可以在一行中的任何位置,我认为插入符号在开头匹配使用单词Boundary\b而不是澄清,
\b
是一个零宽度项目,出现在单词字符
\w
和非单词字符
\w
@Li aungYip之间。这是正确的-答案中的链接对此进行了深入解释。啊,我没有看到蓝色链接颜色。;)处理Unicode时,不区分大小写的匹配是不谨慎的。:)我不知道。仅在某些语言中如此吗?icemanind的模式似乎只使用ASCII(当然,他说这只是一个例子)。至少在Python中,“大写字符”的含义会根据用户的区域设置而变化。(思考练习:如果你是英国人,那么什么是
“Гааааааааааааааааааааааааааааа。。。这实际上看起来像是非常非unicode的、类似于代码页的行为。我没有任何处理非英语的正则表达式的经验,但这可能是需要了解和不要忘记的。。。因为规范正则表达式支持Unicode,而ECMAScript不支持Unicode,所以ECMAScript中的字符类具有更有限的语法,并且某些字符类语言元素具有不同的含义。例如,ECMAScript不支持Unicode类别或块元素\p和\p等语言元素。类似地,匹配单词字符的\w元素在使用ECMAScript和[\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}\p{Pc}\p{Lm}]规范行为时相当于[a-zA-Z_0-9]字符类
new Regex("\bsta\b", RegexOptions.IgnoreCase)