You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

语法着色正则表达式需求:匹配带~前缀或(后缀的函数名

OOREXX 语法着色:精准匹配带前缀/后缀的函数名

针对你给OOREXX开发语法着色方案的需求,我整理了一套精准匹配指定函数名的正则方案,专门解决孤立标识符(比如strip)被误判为函数的问题。

核心正则表达式

针对你指定的函数名单(stream、Strip、Substr),可以用这个正则来匹配符合要求的函数调用:

(?i)(?:~|\b)(stream|strip|substr)\s*\(

逐部分解释

  • (?i):开启大小写不敏感匹配,兼容OOREXX中函数名的大小写变体(比如Strip、strip、STRIP都能匹配)
  • (?:~|\b):非捕获分组,匹配两种合法的函数起始场景:
    • ~:OOREXX特有的函数调用前缀
    • \b:单词边界,确保函数名是独立的标识符(避免匹配myStripVariable这类复合名称里的Strip)
  • (stream|strip|substr):你的目标函数名单,用|分隔,可根据需求添加更多函数名
  • \s*\(:匹配函数调用的左括号,\s*允许函数名和括号之间有任意空白字符(兼容不同代码风格)

匹配示例

✅ 会被匹配的合法函数调用:

  • ~Strip("hello world") → 匹配~Strip(
  • Substr(myVar, 3, 7) → 匹配Substr(
  • ~stream(inputFile, "write") → 匹配~stream(
  • strip( trimmedText ) → 匹配strip((括号前后有空格也能识别)

❌ 不会被误匹配的场景:

  • stripMyString → 复合变量名里的strip,没有~前缀或(后缀,不匹配
  • "Please strip this text" → 字符串字面量里的strip,不触发匹配
  • strip → 孤立的标识符,没有函数调用的括号,不匹配

扩展调整

如果你的语法着色工具不支持(?i)标志,也可以把函数名的所有大小写变体列出来,比如:

(?:~|\b)(Stream|stream|Strip|strip|Substr|substr)\s*\(

另外,如果需要严格禁止函数名和括号之间的空格,把\s*改成\s?(最多一个空格)或者直接去掉即可。

内容的提问来源于stack exchange,提问作者Swifty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:41:07