我有一個輸入屬性鍵值,我想從 json/字典/物件中洗掉它的所有出現。這是一個例子:
{
"$type":"NewRunner.SingleValueExpression",
"name":"ABC",
"age":23
"nestedJSON": {
"$type":"NewRunner.SingleValueExpression003",
"field3":"edvrvbte"
}
}
我想從給定字串的任何地方洗掉“$type”屬性,輸出應該是:
{
"name":"ABC",
"age":23
"nestedJSON": {
"field3":"edvrvbte"
}
}
我怎樣才能寫一個正則運算式呢?有人能幫我嗎?
理想情況下它會像:string.replace("regexValue",replacement)
我正在尋找寫regex值。
我試過這個:
\"\$type\":\". ?(?=abc)\",
這也是:
\"\$type\":\"(?<=\[)(.*?)(?=\])\",
但是困惑我應該在中心寫什么\". ?(?=abc)\"來匹配任何有價值的東西
uj5u.com熱心網友回復:
嘗試這個:
"\$type":[^,{}]*,[\r\n]*|,\s*"\$type":[^{},\r\n]*
"\$type":[^,{}]*,[\r\n]*
"\$type":匹配字串"$type":。[^,{}]*匹配零個或多個字符,除了,這很重要,這意味著每個字符都將被匹配,除非,我們不想穿過逗號。花括號也是一樣,{}我們也不想穿過花括號。,[\r\n]*匹配文字,和零個或多個換行符。
|,\s*"\$type":[^{},\r\n]*
|這就是交替運算子Boolean OR。,\s*匹配逗號后跟零個或多個空白字符。"\$type":這部分與上一部分相同。[^{},\r\n]*這部分也和前面的部分一樣但是這里我們添加了\r并且\n沒有逗號,這是因為如果這個值"$type":"NewRunner.SingleValueExpression"恰好是物件中的最后一個值那么它后面就沒有逗號了,但是這里的問題是在物件中的最后一個值將有一個可選的換行符或一個右大括號},因此我們也不想穿過右大括號。在這里我們添加了\r,\n因為如果該值是最后一個值,我們不想洗掉它之后的新行,這不是一件重要的事情,而是為了使代碼看起來更好,并且右大括號將位于該新行。
請參閱正則運算式演示。
uj5u.com熱心網友回復:
你可能會使用
\s*"\$type":[^{},\r\n]*,?
解釋
\s*匹配可選的空白字符"\$type":匹配"$type":[^{},\r\n]*可選擇匹配除{},換行符之外的任何字符,?匹配一個可選的逗號
請參閱正則運算式演示。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/533757.html
標籤:正则表达式正则表达式替换
下一篇:使用正則運算式從字串中提取鍵值對
