簡體   English   中英

正則表達式忽略某些字符之間

[英]Regex Ignore if between certain characters

假設我有一個字符串:

"ABC+DF" + someVar + exp(A+B)

我想在一些 var 之前和之后匹配 + 符號,而不是在雙引號中或在 exp() 中匹配。

是否有正則表達式只匹配不在引號或 exp() 中的 + 符號?

更新:

您可以假設 exp() 中的所有內容都應該被忽略。 也許這是另一種思考方式。 正則表達式中應忽略引號或 exp() 之間的任何內容。

正則表達式將用於 java String::split 方法。 我不確定這將是哪個平台。

您可以在 Java 中使用replaceAll + split操作:

jshell> String s = "\"ABC+DF\" + someVar + exp(A+B)";
s ==> "\"ABC+DF\" + someVar + exp(A+B)"

jshell> s.replaceAll("(\"[^\"]*\"|exp\\h*\\([^)]*\\))|\\h*\\+\\h*", "$1\0").split("\0+");
$15 ==> String[3] { "\"ABC+DF\"", "someVar", "exp(A+B)" }
  • replaceAll中使用的正則表達式匹配並捕獲我們想要在交替左側的組 #1 中忽略的部分。 然后它用$1\\0替換匹配,其中\\0是一個 NUL 字節(ASCII:0)。
  • split使用的正則表達式只是拆分一個或多個 NUL 字節,即\\0

replaceAll RegEx 演示

暫無
暫無

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

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