私の文字列には、 で区切られた (FUDI) メッセージが含まれてい;\n
ます。特定の文字列で始まるすべてのメッセージを抽出しようとしています。
次の正規表現は正しいメッセージを見つけますが、区切り文字と検索語はまだ含まれています。
var input = 'a b;\n'
+ 'a b c;\n'
+ 'b;\n'
+ 'b c;\n'
+ 'b c d;\n';
function search(input, term){
var regex = new RegExp('(^|;\n)' + term + '([^;\n]?)+', 'g');
return input.match(regex);
}
console.log(search(input, 'a b'));
// current: ["a b", ";↵a b c"]
// wanted1: ["a b", "a b c"]
// wanted2: ["", "c"]
console.log(search(input, 'b'));
// current: [";↵b", ";↵b c", ";↵b c d"]
// wanted1: ["b", "b c", "b c d"]
// wanted2: ["", "c", "c d"]
- 区切り文字を削除するにはどうすればよいですか (wanted1)?
- 検索語 (wanted2) の後のすべてを返すことは可能ですか?
私は正規表現の初心者なので、どんな助けでも大歓迎です。
編集: /gm を使用して、want1 を解決します
var input = 'a b;\n'
+ 'a b c;\n'
+ 'b;\n'
+ 'b c;\n'
+ 'b c d;\n';
function search(input, term){
var regex = new RegExp('^' + term + '([^;]*)', 'gm');
return input.match(regex);
}
console.log(search(input, 'a b'));
// current: ["a b", "a b c"]
// wanted2: ["", "c"]
console.log(search(input, 'b'));
// current: ["b", "b c", "b c d"]
// wanted2: ["", "c", "c d"]