0

寻找一种在选项卡之间获取项目的方法

\t_e\t1\t_

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

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

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

4

3 回答 3

0

尝试通过在?之后添加一个字符来使正则表达式变得惰性*,如下所示:

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

这使得.*匹配尽可能少直到下一次\t(从而防止.吃掉 a \t)。

于 2013-08-09T20:22:37.530 回答
0

试试这个:

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

输出:

['_e', '1']

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

于 2013-08-09T20:25:11.310 回答
0

尝试查找不包含的最长匹配项\t

>>> re.findall(r'([^\t]+)', '\t_e\t1\t_')
['_e', '1', '_']
于 2013-08-09T20:58:29.257 回答