【发布时间】:2015-09-08 14:52:41
【问题描述】:
我想用一个正则表达式捕获四个组。
我有这段文字:
PAY VALUES TO SUM - WITHOU NOTHING: 0.00 (IGNORE THE REST)
PAY VALUES TO SUM - ADD. 50 YEARS: 0.00 (IGNORE THE REST)
PAY VALUES TO SUM - ADD. 70 YEARS: 0.00 (IGNORE THE REST)
PAY VALUES TO SUM - ADD. 80 YEARS: 0.00 (IGNORE THE REST)
我想得到按键后面的数字:
PAY VALUES TO SUM - WITHOU NOTHING:
PAY VALUES TO SUM - ADD. 50 YEARS:
PAY VALUES TO SUM - ADD. 70 YEARS:
PAY VALUES TO SUM - ADD. 80 YEARS:
我只能使用一个正则表达式,所以我尝试了这种方法:
var text = 'PAY VALUES TO SUM - WITHOU NOTHING: 0.00 13º WORD WORD: 0.00' +
text += 'PAY VALUES TO SUM - ADD. 50 YEARS: 0.00 WORD WORD WORD: 0.00';
text += 'PAY VALUES TO SUM - ADD. 70 YEARS: 0.00 WORD WORD WORD: 0.00';
text += 'PAY VALUES TO SUM - ADD. 80 YEARS: 0.00 WORD WORD WORD WORD WORD WORD WORD: 0.00';
var reg = new RegExp(SOME REGEX);
var match = reg.exec(text);
console.log(match[1], match[2], match[3], match[4]);
结果是0.00 0.00 .00 .00。
这是我尝试使用的正则表达式:
new RegExp('PAY VALUES TO SUM - WITHOU NOTHING:' + '\\b.*?(?:\\d\\S*\\s+){1}(\\d\\S*)(?:\\s?\\d\\S*\\s+){14}(\\d\\S*)(?:\\s?\\d\\S*\\s+){14}(\\d\\S*)(?:\\s?\\d\\S*\\s+){29}(\\d\\S*)(?:\\s?\\d\\S*\\s+){41}(\\d\\S*)');
这个想法是在我可以传入的单词或数字之后捕获组。
但显然这是无效的。我怎样才能实现我的目标?
有时数字会发生变化。他们并不总是0.00。
我需要明确传递单词的名称和捕获组。因为文字很大,上面我只展示了一部分。
我有这个其他的正则表达式可以做我正在尝试的事情,但是有另一个文本:
var text = 'PREV SOC 01 672 1.653.806,08 18.512,98 1.667.621,57 2.647,38 07 23 12.965,11 0,00 12.965,11 0,00'
var reg = new RegExp('PREV SOC 01' + '\\b.*?(?:\\d\\S*\\s+){4}(\\d\\S*)(?:\\s?\\d\\S*\\s+){5}(\\d\\S*)', 'i');
var match = reg.exec(text);
console.log(match[1]);
console.log(match[2]);
在这种情况下,我将传递单词“PREV SOC 01”和两个捕获组,一个捕获1.667.621,57,另一个捕获0,00。
我在其他文本中也需要相同的内容:
var text = 'PAY VALUES TO SUM - WITHOU NOTHING: 0.00 13º WORD WORD: 0.00' +
text += 'PAY VALUES TO SUM - ADD. 50 YEARS: 0.00 WORD WORD WORD: 0.00';
text += 'PAY VALUES TO SUM - ADD. 70 YEARS: 0.00 WORD WORD WORD: 0.00';
text += 'PAY VALUES TO SUM - ADD. 80 YEARS: 0.00 WORD WORD WORD WORD WORD WORD WORD: 0.00';
我想通过'PAY VALUES TO SUM - WITHOUT NOTHING:' 并在数字和数字之后选择我想要的。
【问题讨论】:
-
我推荐使用regex101.com 作为尝试正则表达式的地方,
-
谢谢@Ginden,我已经知道了,我已经尝试学习很多正则表达式,但是逻辑非常困难
标签: javascript regex