JavaScript Regex を使用してファイルから部分文字列を抽出しようとしています。以下はファイルからの抜粋です:
DATE:20091201T220000
SUMMARY:Dad's birthday
抽出したいフィールドは「概要」です。アプローチは次のとおりです。
extractSummary : function(iCalContent) {
/*
input : iCal file content
return : Event summary
*/
var arr = iCalContent.match(/^SUMMARY\:(.)*$/g);
return(arr);
}
ベストアンサー1
function extractSummary(iCalContent) {
var rx = /\nSUMMARY:(.*)\n/g;
var arr = rx.exec(iCalContent);
return arr[1];
}
次の変更が必要です:
*
上記のように括弧内に入れてください。そうしないと、一致するグループには 1 つの文字のみが含まれます。^
およびを削除します$
。グローバル オプションを使用すると、行の先頭と末尾ではなく、完全な文字列の先頭と末尾に一致します。代わりに明示的な改行に一致します。完全な配列ではなく、一致するグループ (括弧内にあるもの) が必要なのではないでしょうか。 は
arr[0]
完全な一致 ("\nSUMMARY:..."
) であり、次のインデックスにはグループの一致が含まれます。String.match(regexp) は、一致した文字列を含む配列を返すはずです。私のブラウザではそうはなりません (Mac の Safari はグループではなく、完全な一致のみを返します) が、Regexp.exec(string) は機能します。