我正在使用Python并尝试处理StatsModel的GLM输出。我对正则表达式比较陌生。 我有诸如
的字符串string_1 = "C(State)[T.Kansas]"
string_2 = "C(State, Treatment('Alaska'))[T.Kansas]"
我写了以下正则表达式:
pattern = re.compile('C\((.+?)\)\[T\.(.+?)\]')
print(pattern.search(string_1).group(1))
#State
print(pattern.search(string_2).group(1))
#State, Treatment('Alaska')
因此,这两个字符串都与模式匹配。但是我们都希望在两种情况下都得到State
。基本上,我们希望在第一括号内的逗号(包括它)之后阅读所有内容。
我们如何区分string_2
和string_1
的{{1}}模式而没有State
提取, Treatment
?
答案 0 :(得分:3)
您可以添加一个可选的非捕获组,而不仅仅是允许所有字符:
pattern = re.compile('C\((.+?)(?:, .+?)?\)\[T\.(.+?)\]')
(?:...)
将内容分组在一起而不捕获它。尾随?
使该组成为可选。
答案 1 :(得分:3)