簡體   English   中英

如何使用正則表達式替換/拆分動態字符串?

[英]How can I replace/split a dynamic string using regular expression?

假設我得到如下動態字符串。

#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”。 Substring 是不可能的,因為有太多的 '=' 符號。 本質上,我必須將諸如 '#04215+#04215_DUP9262=' 之類的內容更改為 '#04215_DUP9262='

你可以這樣做: /#([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是對第一個匹配項的反向引用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM