1

やりたい正規表現検索に行き詰まっています。次のリストがあるとします (改行に注意してください)。

Iowa

Big Store
5 Washington Blvd W.
555-123-456

Market 42
721 23th St. S
555-789-123


New York

Cool Café
23 5th Ave. 
123-456-789


Colorado

Pet Shop
1225 Hot St. N.
654-897-215

Discount Inn
25 Lincoln Rd.
456-987-321

Location 6
Address 6
Telephone 6

そこで、\n (改行) を使用して最初に州をキャプチャし、次に次のすべての場所と住所と電話番号をキャプチャすることにしました。これは私の最後の作業反復です:

(\n{3}(.*)(?:\n{2}(.*)\n{1}(.*)\n{1}(.*)))

そこにあるこの美しさは、すべての州とそれぞれの後に最初の場所のみをキャプチャするため、「+非キャプチャ グループの最後に a を追加すると、残りの場所を取得する必要がある」と考えました。このような:

(\n{3}(.*)(?:\n{2}(.*)\n{1}(.*)\n{1}(.*))+)

うそ。そうではありませんでした。壊れるだけです。

私はそれを間違っていますか?州間のすべての場所をキャプチャするにはどうすればよいですか?

私の目的は、次のように、各グループを配列に集めることです。

locations[0][0][0] -> 'Big Store' 
locations[0][0][1] -> '5 Washington Blvd W.' 
locations[0][0][2] -> '555-123-456' 
...
locations[1][0][0] -> 'Cool Café' 
locations[1][0][1] -> '23 5th Ave.' 
locations[1][0][2] -> '123-456-789' 

または類似。

ありがとう!

4

2 に答える 2