2015-08-06 5 views
-6

У меня есть блок текста, как:Python Regex начиная с хэштегом

# <init> (Lorg/cyanogenmod/audiofx/ActivityMusic;)V 
     , 0 iput-object v1, v0, Lorg/cyanogenmod/audiofx/ActivityMusic$11;->this$0 Lorg/cyanogenmod/audiofx/ActivityMusic; 
     , 4 invoke-direct v0, Ljava/lang/Object;-><init>()V 
     , a return-void 

Я хотел бы рег-EXP в Python, который будет выбрать только первая линия

# <init> (Lorg/cyanogenmod/audiofx/ActivityMusic;)V 

Возможно ли это? Благодаря!

+2

Это не хэштег. Это хэш. – khelwood

+0

'if line.startswith (" # ")' –

+1

«Напишите для меня регулярное выражение». Здесь недопустимы вопросы: https://meta.stackoverflow.com/questions/285733/should-give-me-a-regex- that-does-x-questions-be-closed –

ответ

1

Просто расщепляется новой строки и получить первый элемент:

test_str = "# <init> (Lorg/cyanogenmod/audiofx/ActivityMusic;)V\n   , 0 iput-object v1, v0, Lorg/cyanogenmod/audiofx/ActivityMusic$11;->this$0 Lorg/cyanogenmod/audiofx/ActivityMusic;\n   , 4 invoke-direct v0, Ljava/lang/Object;-><init>()V\n   , a return-void " 
print(test_str.split('\n')[0]) 

См demo

Выход: # <init> (Lorg/cyanogenmod/audiofx/ActivityMusic;)V.

Если это не первая линия:

non-regex way:

test_str = "some string\n# <init> (Lorg/cyanogenmod/audiofx/ActivityMusic;)V\n   , 0 iput-object v1, v0, Lorg/cyanogenmod/audiofx/ActivityMusic$11;->this$0 Lorg/cyanogenmod/audiofx/ActivityMusic;\n   , 4 invoke-direct v0, Ljava/lang/Object;-><init>()V\n   , a return-void\n# <init> (Lorg/cyanogenmod/audiofx/ActivityMusic;)V " 
ss = test_str.split('\n') 
for s in ss: 
    if s.strip()[0] == "#": 
     print s 
     break 

Для регулярных выражений образом, see this:

p = re.compile(r'^#.*', re.M) 
print p.search(test_str).group() 

Главное в регулярных выражений подхода является

  • Использование re.M многострочный флаг
  • Использование re.search, который будет возвращать только один объект матч
  • # должен быть первым символом (или добавить \s* - необязательный пробел), так что строка, начинающаяся с ним может быть сопоставлен.
+1

что если это не первая строка? –

+0

нет, не мой. –

+0

Я добрый человек, желающий помочь людям, но через пару секунд после публикации ответа, который действительно работает ... Я начинаю терять веру. –

Смежные вопросы