在大文本中添加数字RegExp

时间:2015-11-07 22:47:29

标签: javascript regex

我有像

这样的大文字
Word 3 : 3 Word
bla-bla
....
Word (10%) 2 : 4 (15%) wORD
BLA-BLA
Word 4 : 1 Word
bla-bla
....
...

我需要将(10%)放在Word 41 Word之间 Word (10%) 2 : 4 (15%) wORD这个。所以最后的样子必须是

Word (10%) 3 : 3 (10%) wORD
bla-bla
Word (10%) 2 : 4 (15%) wORD
bla-bla
Word  (10%) 4 : 1 (10%) Word
vla-bla
..
..
..

我尝试/(.*?)\s*(\d+)\s*:\s*(\d+)\s*\(\d+%\)\s*(.*)\s/gm EXAMPLE但它只找到Word (10%) 4 : 1 (10%) Word这样的模式。

有人知道怎么做吗?

1 个答案:

答案 0 :(得分:1)

以下正则表达式

/^(\w+) +(\d+ : \d+) +(\w+)/gm

将匹配

  • (\w+)由第一组捕获并由[a-zA-Z0-9_]
  • 引用的一个或多个字词($1
  • [ ]+一个或多个空格
  • (\d+ : \d+)一个数字,一个文字" : "和另一个数字,由第二组捕获并由$2引用
  • [ ]+一个或多个空格
  • (\w+)由第三组捕获并由$3引用的一个或多个单词字符

<强>代码

var regex = /^(\w+) +(\d+ : \d+) +(\w+)/gm;
var replacement = "$1 (10%) $2 (10%) $3";
var text = `Word 3 : 3 Word
bla-bla
....
Word (10%) 2 : 4 (15%) wORD
BLA-BLA
Word 4 : 1 Word
bla-bla
....
...`;
var result = text.replace( regex, replacement);

document.write("<pre>" + result + "</pre>");