簡體   English   中英

在java中用字符串替換正則表達式

[英]In java replace the regex with string

在java中,我使用正則表達式\\".*?\\" 我用它來用一個術語字符串替換所有帶有雙引號的字符串。

Ex:
INPUT: Functions.unescapeJson("test")
Result : Functions.unescapeJson("String") 

但是現在我想排除一些包含雙引號的字符串。 所以,我使用/作為轉義字符。 如何實現這一目標。

Ex:
INPUT: Functions.getJsonPath(Functions.getJsonPath(Functions.getJsonPath(Functions.unescapeJson("test"), "m2m:cin.con"),"payloads_ul.dataFrameOutput"),"[/"Dimming Value/"]")

RESULT: Functions.getJsonPath(Functions.getJsonPath(Functions.getJsonPath(Functions.unescapeJson(String), String),String),String)

但是如果我使用以前的正則表達式,我得到的結果是:

Functions.getJsonPath(Functions.getJsonPath(Functions.getJsonPath(Functions.unescapeJson(input.mIntegerm/:sgn.nev.rep), String),String),StringDimming ValueString)

如果找到/它應該忽略而不替換原始字符串,如何使用正則表達式實現這一點。

我正在使用的代碼

public static void main(String[] args) {
    String STRINGVALIDATIONREGEX = "\".*?\"";
    String formula = "Functions.getJsonPath(Functions.getJsonPath(Functions.getJsonPath(Functions.unescapeJson(input.m2m/:sgn.nev.rep), \"m2m:cin.con\"),\"payloads_ul.dataFrameOutput\"),\"[\"Dimming Value\"]\")";
    System.out.println(formula.replace(STRINGVALIDATIONREGEX, "String"));
}

您可以使用此正則表達式:

\"(\/?.)*?\"

使用 [^/] 匹配不是斜杠的任何內容。

例如, [^/]?\\".*[^/]?\\" 將捕獲前面沒有 / 的引號

"((?:[^"]|(?<=\/)")*)"
  1. "匹配一個"
  2. [^"]匹配一個非引號字符
  3. | 或者
  4. (?<=\\/)")前面有/的引號字符
  5. *匹配子表達式 2 - 4 次或多次。
  6. "匹配一個"

請參閱正則表達式演示

如果您認為諸如"abc/"類的字符串無效,那么您應該使用更嚴格的正則表達式:

"((?:[^"\/]|\/")*)"
  1. "匹配"
  2. [^"\\/]匹配任何不是/引號的字符
  3. | 或者
  4. \\/"匹配一個/"組合
  5. *匹配子表達式 2 - 4 次或多次。
  6. "匹配一個"

請參閱正則表達式演示

暫無
暫無

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

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