我有一个文本块,如:
# <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
我想在Python中使用reg-exp,只选择第一行
# <init> (Lorg/cyanogenmod/audiofx/ActivityMusic;)V
这可能吗?谢谢!
答案 0 :(得分: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
。
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*
- 可选空格),以便可以匹配以它开头的行。