2016-10-15 3 views
-1

Я хочу выбрать текст между двумя символами * в файле, и мне трудно создать регулярное выражение.Какое регулярное выражение выбирает строку между двумя символами «*»

Например, с файлом, как следующие:

* Apple 
Are good 

* Banana 
Are great 

* Cauliflower 
Are bad 

Было бы выбрать 3-х различных групп

компании Apple Хороши

Banana являются большими

и

Цветная капуста плохие

Я считаю, что нужно использовать^и $ для этого, но мой селектор: ^\*$\*

не работает.

+0

Предполагая, что вы работаете в режиме однострочного: '[*] [* $]' группа 0 будет иметь его я подозреваю (*.?). В основном просто убедитесь, что вы положили '*' в скобки или избегаете их с помощью '\' – CollinD

+0

. Почему вы используете '^' и '$', если вы не ищете соответствия строк/окончаний? И как вы думаете, что в вашем выражении вы не будете совпадать с фактическими символами, кроме '\ *'? Я думаю, вам нужно сделать еще несколько исследований регулярных выражений. – TigerhawkT3

+0

Может быть, я смущен, как это работает RE. Не могу ли я просто выбрать текст после '' '' '' '', пока не появится еще один символ '' '' '' ' – chackerian

ответ

2

Регулярные выражения здесь даже не нужны. Просто используйте str.split и str.strip:

>>> f = '''* Apple 
... Are good 
... 
... * Banana 
... Are great 
... 
... * Cauliflower 
... Are bad''' 
>>> for line in f.split('*'): 
...  if line.strip(): 
...    print('start') 
...    print(line.strip()) 
...    print('end') 
... 
start 
Apple 
Are good 
end 
start 
Banana 
Are great 
end 
start 
Cauliflower 
Are bad 
end