[英]Match Multiple Line Regex Javascript
在整個夜晚的大部分時間里,我都把頭撞在牆上,所以我期待Stackoverflow眾神對此提供幫助。 我有一個試圖解析為數組的文本字符串。 請參閱以下示例:
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:
有什么想法嗎?
您可能想將JavaScript的 String.prototype.match
與
/(?:Name.+)(?:\\n.*){2}/g
。 非捕獲組是這樣,因此您不會將結果加倍。
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"
我不是JS專家,但是經過一些工作后,我可以提供以下腳本:
var rawdata='\
\
\
Name: John Doe\
Address: 123 W Main Street\
City: Denver\
\
\
Name: Julie Smith\
Address: 1313 Mockingbird Lane\
City: Burbank';
var looppattern = /Name: /g;
var loopnum = rawdata.match(looppattern);
var pattern = /\s{2}([\w\:\s]+)/;
var nummessages = rawdata.replace(new RegExp("Name:", 'g'),"{Name:").split("{");
alert(nummessages[1]);
alert(nummessages[2]);
這似乎在JSFiddle中工作。 在這里,我認為'{'不在您可以更改此定界符的字符串之間。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.