Python 提取可变长度的子串

Python Extracting a substring of variable length

我正在尝试从一些 verilog 代码中提取模块的名称。例如:

module uart (inputs, outputs, etc)

我知道我可以使用 pythons 切片来获取子字符串,但这只使用索引。我需要让它像这样切片:string[6: (],它在那里切片直到括号的第一个实例。我正在考虑使用 string.find 找到索引第一个括号和将其替换为切片,但我很好奇是否有更好的方法来执行此操作,也许使用正则表达式或其他方法?

这是使用正则表达式的方法。从第 6 个字符开始捕获,直到左括号的第一个实例:

>>> import re
>>> string = "abcdefghijklmno(adfa adfds("
>>> m = re.search(r'.{6}(.*?)\(', string)
>>> m.group(1)
'ghijklmno'

此正则表达式将捕获第一个换行符或左括号,以先看到的为准。 ?: 部分表示它是一个非捕获组。我们不需要存储该数据...我们只是将该组用于 or ('|') 操作:

r'.{6}(.*?)(?:\(|\n)'