我正在寻找某个特定的关键字后停止匹配的RegExp。
这是我的输入内容
blabl
texta 1,40
textb 3.50
textc 6,90
blabla 2 3
ddd 3 jj d
键短信textf
2,30 4,70 5,90
我要匹配的内容:
blabl
texta 1,40
textb 3.50
textc 6,90
blabla 2 3
ddd 3 jj d
键文本textf
2,30 4,70 5,90
我的RegExp当前是什么样的
[\ d] {1,2} [。,] [\ d] {2}
我尝试解决的问题
[\ d] {1,2} [。,] [\ d] {2}(?= key)
所以我一直在寻找这样的东西:
(我要匹配的内容)(任何内容)(关键字)
我尝试了以下RegExp:
([\ d] {1,2} [。,] [\ d] {2}(。| \ n)+(?= key))
但现在它匹配了:
texta 1,40
textb 3.50
textc 6,90
blabla 2 3
ddd 3 jj d
键文本textf
2,30 4,70 5,90
我读到了一些非俘虏团体,这似乎可以解决我的问题。所以我尝试了:
([\ d] {1,2} [。,] [\ d] {2}(?>(。| \ n)+)(?= key))
但这根本不符合任何条件。
我觉得我快要走了,但是我真的可以帮些忙。任何想法,我想念的赞赏。如果您对我的问题有任何疑问,请随时提出。
提前感谢您的时间和精力。
答案 0 :(得分:1)
您可以使用
/\d+[,.]\d+(?=[\s\S]*key)/g
请参见regex demo。
详细信息
\d+
-1个以上数字[,.]
-一个,
或.
\d+
-1个以上数字(?=[\s\S]*key)
-一个正向超前查询,它要求任何0+个字符,后跟1个以上的数字后立即在右边紧跟一个单词key
。JS演示:
var s = "blabl\n\ntexta 1,40\ntextb 3.50\ntextc 6,90\n\nblabal 2 3\nddd 3 jj d \n\nkey textd textf\n2,30 4,70 5,90";
var rx = /\d+[,.]\d+(?=[\s\S]*key)/g;
console.log(s.match(rx));