1

私はこのファイルを持っています

line 1
line 2
line 3

line 4    
line 5
line 6

line 1からへline 3の行き方

私は試した:

print re.match(r'(.*)^$', lines, re.MULTILINE).groups()

しかし、私は得る:

AttributeError: 'NoneType' object has no attribute 'groups'
4

4 に答える 4

2

これには正規表現を使用しません。行を反復して空白で停止するか、区切り文字としてsplit使用するだけのほうがはるかにクリーンです(IMO)。'\n\n'複雑な正規表現を使用するsplitよりも、6 か月後にこのコードに戻ったときに読みやすくなるため、この方法をお勧めします。

s = '''line 1
line 2
line 3

line 4
line 5
line 6'''

lines = []
for line in s.split('\n'): # just for line in file if you're reading from a file
    if line:
        lines.append(line)
    else: # Empty line: stop looking
        break

print(lines) # >>> ['line 1', 'line 2', 'line 3']

print(s.split('\n\n'))  # >>> ['line 1\nline 2\nline 3', 'line 4\nline 5\nline 6']
于 2013-10-16T19:42:16.897 に答える
0

視覚的に、「空白」行まで行を取得したい場合は、この正規表現でそれを行う必要があります。
修飾子はまったく必要ありません。

 //  (?:[^\S\n]*(?:\S+[^\S\n]*)+(?:\n|$))+

 (?:
      [^\S\n]* 
      (?: \S+ [^\S\n]* )+
      (?: \n | $ )
 )+
于 2013-10-16T19:35:00.727 に答える