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)'
我正在尝试从一些 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)'