Python提取可变长度的子字符串

时间:2015-06-03 15:11:48

标签: python regex substring extract slice

我正试图从一些verilog代码中添加模块的名称。例如:

1+

我知道我可以使用pythons切片来获取子字符串,但只使用索引。我需要做它,使它像这样切片:string [6:(],它切割到括号的第一个实例。我正在考虑使用string.find来找到索引的第一个括号并替换它进入切片,但我很好奇是否有更好的方法来做到这一点,也许使用正则表达式或什么?

1 个答案:

答案 0 :(得分:1)

这是一种使用正则表达式的方法。在第6个字符之后开始捕获,直到第一个开放的parens实例:

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

这个正则表达式将捕获第一个换行符或开头的parens,无论它首先看到的是什么。 ?:部分表示它是非捕获组。我们不需要存储那些数据......我们只是将该组用于或('|')操作:

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