我的字符串包含由 . 分隔的 (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 解决wanted1
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"]