【问题标题】:How can I replace/split a dynamic string using regular expression?如何使用正则表达式替换/拆分动态字符串?
【发布时间】:2018-02-12 08:53:33
【问题描述】:

假设我得到如下动态字符串。

#04215: ["#02080=#04217+#04217_DUP5554","#01066=(#01047+#01111+#01048+#01118+#01049+#01050+#01121+#01128+#01131+#01141+#01138+#01148+#01053+#01062+#01054+#02080+#02048+#01064+#01063+#01065+#01051+#01052+#02062+#02069+#02072+#02079)","#02002=#01066","#02007=(#02002+#02003+#02004+#02005+#02006)","#02010=(#02007+#02008+#02009)","#04216+#04216_DUP5554=#04217+#04217_DUP5554","#04215+#04215_DUP5554=#04216+#04216_DUP5554"]

我必须将“#04215+#04215_DUP5554=#04216+#04216_DUP5554”] 部分设为"#04215_DUP9262=#04216+#04216_DUP9262"。我做了一个正则表达式来匹配'#04215+#04215_DUP9262=' as '([#][0]["+pgNo+"][0-9]{3}[+][#][0]["+pgNo+"][0-9]{3}[_][D][U][P][0-9]{4}[=])'。我尝试了以下。

考虑我在变量 a 中得到动态字符串;

var regex2=new RegExp("([#][0]["+pgNo+"][0-9]{3}[+][#][0]["+pgNo+"][0-9]{3}[_][D][U][P][0-9]{4}[=]) ([#][0]["+pgNo+"][0-9]{3}[_][D][U][P][0-9]{4})" ,"g");

a=a.replace(regex2,'$1,$2');

它没有替换字符串。请帮助。

regex2 中的 pgNo 是动态的。在当前上下文中,它的值为“4”。子字符串是不可能的,因为有太多的 '=' 符号。本质上,我必须将 '#04215+#04215_DUP9262=' 之类的发生更改为 '#04215_DUP9262='

【问题讨论】:

标签: javascript regex reactjs


【解决方案1】:

你可以这样做:/#([0-9]{5})\+#\1/g => $1

在代码示例中,这将是:

let regex = new RegExp('(#' + pgNo + ')\\+\\1', 'g');
let myString = "#04215+#04215_DUP9262=#04216+#04216_DUP9262";

myString = myString.replace(regex, '$1');

在此(#[0-9]{5}) 将匹配哈希后的任何 5 个字符数字,\+ 匹配数字之间的“+”,(它必须被转义,否则它会被解释为前面标记的“一个或多个”) , 而\1 是对第一个匹配项的反向引用。

【讨论】:

  • 请告诉我是否可以将 $1 分配给变量以进行进一步操作?我在 $1 中得到匹配的字符串,但无法根据匹配进行进一步切片
  • $1 是对括号内组的引用,因此,(#04215) 将是此处的捕获组。
猜你喜欢
  • 2022-01-15
  • 2011-12-28
  • 1970-01-01
  • 2023-01-25
  • 2019-01-30
相关资源
最近更新 更多