3

コードは次のとおりです。

#coding=utf-8

import re

str = "The output is\n"
str += "1) python\n"
str += "A dynamic language\n"
str += "easy to learn\n"
str += "2) C++\n"
str += "difficult to learn\n"
str += "3244) PHP\n"
str += "eay to learn\n"


pattern = r'^[1-9]+\) .*'
print re.findall(pattern,str,re.M)

出力は

['1) python', '2) C++', '3244) PHP']

ただし、次のように分割したいと思います。

['1) python\n'A dynamic language\n easy to learn\n'  2) C++\n difficult to learn\n', '3244) PHP\n easy to learn\n']

つまり、最初の行が "number)" で始まらない場合は無視し、次の行が "number)" で始まるまでの行を同じグループと見なします。パターンをどのように書き直せばよいですか?

4

3 に答える 3

3
>>> import re
>>> strs = 'The output is\n1) python\nA dynamic language\neasy to learn\n2) C++\ndifficult to learn\n3244) PHP\neay to learn\n'
>>> re.findall(r'\d+\)\s[^\d]+',strs)
['1) python\nA dynamic language\neasy to learn\n',
'2) C++\ndifficult to learn\n',
'3244) PHP\neay to learn\n']
于 2013-06-19T14:35:50.577 に答える
1

改行を考慮して、パターンに空白の python 正規表現を追加する必要があります。

これを試して:

regex = r"[1-9]+\) .*\s.*"

\s は空白の正規表現です

于 2013-06-19T14:35:39.363 に答える