2

私は夜の大部分で頭を壁にぶつけたので、これを助けるためにstackoverflow Godsを探しています。配列に解析しようとしているテキスト文字列があります。以下の例を参照してください。

Name: John Doe
Address: 123 W Main Street
City: Denver


Name: Julie Smith
Address: 1313 Mockingbird Lane
City: Burbank

私が取得したいのは、次のような配列です。

[Name: John Doe Address: 123 W Main Street City: Denver, Name: Julie Smith Address 1313 Mockingbird Lane City: Burbank]

次の正規表現から始めましたが、正規表現で正常に動作します。

(Name.+)(\n.*){2}

ただし、プログラムまたは jsfiddle でそれを使用しようとすると、null が返されます。

http://jsfiddle.net/auqHA/1/

何かご意見は?

4

2 に答える 2

0

おそらくJavaScript String.prototype.match
/(?:Name.+)(?:\n.*){2}/g. 非キャプチャ グループは、結果が 2 倍にならないようにするためのものです。

var s = '\
Name: John Doe\n\
Address: 123 W Main Street\n\
City: Denver\n\
\n\
\n\
Name: Julie Smith\n\
Address: 1313 Mockingbird Lane\n\
City: Burbank\
';

var arr = s.match(/(?:Name.+)(?:\n.*){2}/g);
/* gives
["Name: John Doe\n\
Address: 123 W Main Street\n\
City: Denver", "Name: Julie Smith\n\
Address: 1313 Mockingbird Lane\n\
City: Burbank"]
*/
// so if you want no new lines,
arr.map(function (e) {return e.replace(/\n/g, ' ');});

編集あなたのフィドルを見ただけで、それが機能しない理由は、新しい行を入れるのを忘れたためです。すなわち

s = 'a\
b'; // s === "ab"

s = 'a\n\
b'; // s === "a\nb"
于 2013-06-04T14:50:36.853 に答える