我正在使用Python 2.7并且对正则表达式有疑问。我的字符串就是这样......
"SecurityGroup:Pub HDP SG"
"SecurityGroup:Group-Name"
"SecurityGroup:TestName"
我的正则表达式如下所示
[^S^e^c^r^i^t^y^G^r^o^u^p^:].*
以上似乎有效,但我觉得它不是很有效,而且如果字符串有单词" group"在其中,那也会失败......
我正在寻找的是输出应该在冒号后找到任何东西(:
)。我还以为我可以做类似于使用第2组作为我的匹配...但问题是,如果名称中有空格,那么我将无法获得正确的名称。
(SecurityGroup):(\w{1,})
答案 0 :(得分:3)
为什么不做呢
security_string.split(':')[1]
要在冒号后抓取字符串的第二部分吗?
答案 1 :(得分:2)
您可以使用lookbehind:
pattern = re.compile(r"(?<=SecurityGroup:)(.*)")
matches = re.findall(pattern, your_string)
打破它:
(?<= # positive lookbehind. Matches things preceded by the following group
SecurityGroup: # pattern you want your matches preceded by
) # end positive lookbehind
( # start matching group
.* # any number of characters
) # end matching group
在字符串"something something SecurityGroup:stuff and stuff"
上测试时,它会返回matches = ['stuff and stuff']
。
修改强>
如评论中所述,pattern = re.compile(r"SecurityGroup:(.*)")
完成同样的事情。在这种情况下,您匹配字符串"SecurityGroup:"
后跟任何内容,但只返回后面的内容。这可能比我使用lookbehind的原始示例更清晰。
答案 2 :(得分:2)