2013-08-09 5 views
0

Ищете способ, чтобы получить элементы между вкладкамиполучить строку между с питоном

\t_e\t1\t_ 

Мне нужно, чтобы получить 1, но в других случаях это будет более длинная строка.

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

9 раз из 10, что линия возвращает строковое значение/я хочу, но не всегда, просто чтобы быть ясно после того, как подчеркивание это может быть любой из ничего письма в белом пространстве.

ответ

0

Попробуйте сделать регулярное выражение ленивым, добавив ? характер после *, как так:

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

Это делает .* матч как можно меньше до следующего \t (и, таким образом, предотвращает ., чтобы съедать \t).

+0

Я знаю, что мне нельзя сказать спасибо, но я только что получил. БЛАГОДАРЮ. Я действительно думал, что ставить вопрос mart после подчеркивания, но не в разделе фактического соответствия. – jhmiller

+0

@ user1620852 Говорить только «спасибо» не рекомендуется, но не строго запрещено :) Рад, что это вам помогло!^_ ^ – Jerry

0

Попробуйте это:

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

выход:

['_e', '1'] 

В основном, он использует положительный предпросмотр и утверждение назад '. Кроме того, (?s) устанавливает флаг «dotall», позволяя ему сопоставлять пробелы.

0

Попробуйте найти самые длинные матчи, которые не включают в себя \t

>>> re.findall(r'([^\t]+)', '\t_e\t1\t_') 
['_e', '1', '_'] 
Смежные вопросы