你好,某些文字模式在哪里:
some text Here +0.25(2)
some text Here 0.25(2.3)
some text Here 0.00(2.3)
some text Here -1.5(1.5)
...
some text Here param_1(param_2)
我需要提取两个值param_1
和param_2
。如何使用regexpressions解决它? (需要Javascript)
param_1
是数字包含+, - 或没有任何操作。
param_2
是数字
答案 0 :(得分:1)
([+-]?\d+(?:\.\d+)?)\((\d+(?:\.\d+)?)(?=\))
试试这个。参见demo.Grab捕获。
https://regex101.com/r/vD5iH9/25
var re = /([+-]?\d+(?:\.\d+)?)\(\d+(?:\.\d+)?(?=\))/g;
var str = 'some text Here +0.25(2)\nsome text Here 0.25(2.3)\nsome text Here 0.00(2.3)\nsome text Here -1.5(1.5)\n...\nsome text Here param_1(param_2)';
var m;
while ((m = re.exec(str)) != null) {
if (m.index === re.lastIndex) {
re.lastIndex++;
}
// View your result using the m-variable.
// eg m[0] etc.
}
编辑:
(.*?)\s([+-]?\d+(?:\.\d+)?)\((\d+(?:\.\d+)?)(?=\))
使用它来捕获所有三个组件。参见演示。
答案 1 :(得分:1)
我假设你想要一个param_1
的数组,然后是一个param_2
的数组。
(捕捉param_1
s):
/[+-\d.]+(?=\([\d.]+\)$)/gm
和param_2's甚至更简单:
/[\d.]+(?=\)$)/gm
尝试完整jsFiddle demo。
var param1 = str.match(/[+-\d.]+(?=\([\d.]+\)$)/gm);
var param2 = str.match(/[\d.]+(?=\)$)/gm);
param1
现在是一个包含param_1
的数组,param2
用于param_2
。