【问题标题】:Regular Expression excluding of expression like int keyword正则表达式不包括像 int 关键字这样的表达式
【发布时间】:2014-02-26 14:48:36
【问题描述】:

我为编译器编写了一个迷你扫描器,它从文件中读取,我想写而不是变量,id 和 for 关键字什么都不做(一组想要从我的变量形式表达式中排除的单词),如下行获取我的变量,我如何从这个表达式中排除例如 intbool 或 ...:

((?:[A-Za-z][A-Za-z0-9_]*))

【问题讨论】:

    标签: c# regex compiler-construction lexical-analysis


    【解决方案1】:

    我认为你想要的是一个零宽度的负前瞻。 C# 正则表达式中的语法是将您不想匹配的表达式分组为零宽度负前瞻。另外你可能需要用词边界\b

    string pattern = @"(\b(?!int|bool)(?:[A-Za-z][A-Za-z0-9_]*)\b)";
    

    【讨论】:

    • 你的表达式例如只是从 bool 中省略 'b' 但我想省略所有的 "bool" 作为一个词。
    • 请帮助我,因为我是正则表达式的新手,并且有一个项目,谢谢。
    • @user3356317 我用我测试过的表达式更新了示例。
    • 但是当我将它添加到我的 c# 代码时,它并没有正确替换,但在在线正则表达式测试器中它可以工作,我的代码是:
    • 字符串模式 = "(\b(?!int|bool)(?:[A-Za-z][A-Za-z0-9_]*)\b)";字符串替换 = "id";正则表达式 rgx = 新正则表达式(模式); this.lines[index] = rgx.Replace(this.lines[index], 替换);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多