Skip to main content
 首页 » 编程设计

Python RegEx 捕获模式后的第一个词

2025年05月04日18softidea

可能的字符串是:

  1. public class MyClass extends ParentClass {

或

  1. 公共(public)类 MyClass 抛出 SomeException {

或者只是

  1. 公共(public)类 MyClass {

我使用以下模式来始终捕获 MyClass:

ptrn = "((public|private|protected)\s+(.*)\s*[class|interface]\s+(\w+))" 

但是当我这样做的时候

regex = re.search(ptrn, text) 
 
className = regex.group(4)  

对于 1 和 2,我分别得到 ParentClass 和 SomeException,只有对于 3,我得到 MyClass。

我的正则表达式模式有什么问题,我该如何解决?

请您参考如下方法:

我不懂 Python,但我对正则表达式相当了解。您正在寻找的更像是: (public|private|protected)\s+(class|interface)\s+(\w+)

我不知道在 Python 中属于哪个组,但在大多数其他语言中,它属于第 3 组(0 是整个字符串,1 是公共(public)的、私有(private)的或 protected ,2 是类或接口(interface),3 将是您的类名。)