我有像
这样的大文字Word 3 : 3 Word
bla-bla
....
Word (10%) 2 : 4 (15%) wORD
BLA-BLA
Word 4 : 1 Word
bla-bla
....
...
我需要将(10%)
放在Word 4
和1 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
这样的模式。
有人知道怎么做吗?
答案 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>");