在正则表达式句子中使用':'(0x3A)字符?

时间:2011-07-29 20:47:04

标签: c# regex syntax-highlighting

不,这不是The ':' character, hexadecimal value 0x3A, cannot be included in a name

的复制品

对于我的脚本语言,我的语法高亮显示有一个正则表达式:

`@"\bClass+(?<range>\w+?)\b"` 

基本上标记了Class Name

(我上网的引擎)

我在正则表达式中不是主人,但出于某种原因,使用我的语言创建标签的:字符不起作用。

我试过

 @"\b:+(?<range>\w+?)\b"`, `@"\b\:+(?<range>\w+?)\b"`<RB> `@"\b(\x3A)+(?<range>\w+?)\b"

它拒绝工作!

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

我怀疑您的案例中的问题不是:本身,而是\b之前的问题。 \b标记单词字符和非单词字符之间的边界,但Class由单词字符组成,:是非单词字符。因此\b :的行为与Class的行为不同,所以:

`\bClass` matches " Class Name"
`\b:` does not match " : Name"

如果您使用原始表达式,但将第一个\b替换为(?<!\w),则可能会正确识别: