寻找一种在选项卡之间获取项目的方法
\t_e\t1\t_
我需要得到 1 但在其他情况下它将是一个更长的字符串。
re.search("\t_e\t(.*)\t_", string).group(1)
该行 10 次中有 9 次返回我想要的字符串/值,但并非总是如此,只是为了在下划线后清楚,它可以是从字母到空格的任何内容。
尝试通过在?
之后添加一个字符来使正则表达式变得惰性*
,如下所示:
re.search("\t_e\t(.*?)\t_", string).group(1)
^
这使得.*
匹配尽可能少直到下一次\t
(从而防止.
吃掉 a \t
)。
试试这个:
re.findall(r"(?s)(?<=\t)(.*?)(?=\t)", "\t_e\t1\t_")
输出:
['_e', '1']
基本上,它使用积极的前瞻和后瞻断言。此外,(?s)
设置“dotall”标志,允许它匹配空白。
尝试查找不包含的最长匹配项\t
>>> re.findall(r'([^\t]+)', '\t_e\t1\t_')
['_e', '1', '_']