在python之间获取字符串

时间:2013-08-09 20:20:32

标签: python regex tabs

寻找在标签之间获取项目的方法

\t_e\t1\t_

我需要获得1,但在其他情况下,它将是一个更长的字符串。

re.search("\t_e\t(.*)\t_", string).group(1)

10次中有9次该行返回我想要但不总是的字符串/值,只需要在下划线后清楚它可以是从字母到空格的任何内容。

3 个答案:

答案 0 :(得分:0)

尝试在?之后添加*字符,使正则表达式变得懒惰,如下所示:

re.search("\t_e\t(.*?)\t_", string).group(1)
                    ^

这会使.*匹配尽可能少,直到下一个\t(从而阻止.吃掉\t)。

答案 1 :(得分:0)

试试这个:

re.findall(r"(?s)(?<=\t)(.*?)(?=\t)", "\t_e\t1\t_")

输出:

['_e', '1']

基本上,它使用积极的前瞻和后瞻性断言。此外,(?s)设置“dotall”标志,允许它匹配空格。

答案 2 :(得分:0)

尝试查找不包含\t

的最长匹配项
>>> re.findall(r'([^\t]+)', '\t_e\t1\t_')
['_e', '1', '_']