行中选择未知文本的正则表达式

时间:2017-07-05 18:20:49

标签: python regex

我有以下字符串:

static name p1SystemSignalAlarm_oid = {4.3.4.2.1}
static name p1SystemKfLinkNet_oid = {3.4.1.5.7}

我需要从第一行获得“警报”,从第二行获得“网络”。 我成功选择了SystemSignalAlarm_oid,我可以选择使用strip所需的单词。但如果我可以使用一个正则表达式,那将会很棒。我该如何选择呢?

2 个答案:

答案 0 :(得分:3)

这会在您的示例行中找到AlarmNet

for item in lines:
    result = re.findall(r'([A-Z][a-z]+)_oid', item)
    print result[0]

答案 1 :(得分:0)

您似乎需要最后一个大写和下划线之间的单词。所以:

([A-Z][a-z]*)_

然后取第1组,忽略下划线:

>>> re.search('([A-Z][a-z]*)_', 'p1SystemSignalAlarm_oid').group(1)
'Alarm'
>>> re.search('([A-Z][a-z]*)_', 'p1SystemKfLinkNet_oid).group(1)
'Net'