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

如何编写正则表达式提取指定模式的继承类声明字符串?

解决正则提取inherits片段的问题

我懂你要抓的是字符串里从inherits开始,到后面像implements/extend这类关键词之前的整段内容,不管类名之间的逗号带不带空格对吧?给你一个精准的正则方案:

正则表达式

inherits\s+.+?(?=\s+(?:implements|extend|union|intersection)\b)

逐个部分拆解说明

  • inherits\s+:精准匹配inherits单词,后面跟着至少一个空格,避免误匹配类似inheritsX的错误内容
  • .+?:用非贪婪模式匹配任意字符,这样会刚好停在后续关键词的前面,不会过度匹配多余内容
  • (?=\s+(?:implements|extend|union|intersection)\b):这是正向预查,用来定位片段的结束位置——匹配后面跟着空格+指定关键词的位置,(?:...)是不捕获的分组,\b是单词边界,防止匹配到关键词的变种(比如implements123)

实际测试示例

用Python演示实际效果,完全覆盖你给出的两种输入场景:

import re

# 定义正则模式
pattern = r'inherits\s+.+?(?=\s+(?:implements|extend|union|intersection)\b)'

# 测试不同输入
test_case1 = 'type MyClass inherits SomeClass,SomeOtherClass implements Node'
test_case2 = 'type MyClass inherits SomeClass, SomeOtherClass implements Node'
test_case3 = 'type MyClass inherits Foo,Bar,Baz union SomeType'

# 提取结果
print(re.findall(pattern, test_case1))  # 输出: ['inherits SomeClass,SomeOtherClass']
print(re.findall(pattern, test_case2))  # 输出: ['inherits SomeClass, SomeOtherClass']
print(re.findall(pattern, test_case3))  # 输出: ['inherits Foo,Bar,Baz']

扩展说明

如果之后还有其他同类关键词(比如mixins),只需要在正则的分组里补充即可,比如:

inherits\s+.+?(?=\s+(?:implements|extend|union|intersection|mixins)\b)

这样就能灵活应对各种同类关键词啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:08:14