我需要一個大括號對恰好出現一次匹配的正則表達式:正則表達式:精確匹配一個發生
myString_{1-10} -> match
myString_{hello}_xyz -> match
myString_{1-10}_{hello} -> do not match
這裏是我的正則表達式:
(\{)[^}]*(\})
的問題是,我的正則表達式也匹配包含超過一個大括號對的字符串......我錯過了什麼?
我需要一個大括號對恰好出現一次匹配的正則表達式:正則表達式:精確匹配一個發生
myString_{1-10} -> match
myString_{hello}_xyz -> match
myString_{1-10}_{hello} -> do not match
這裏是我的正則表達式:
(\{)[^}]*(\})
的問題是,我的正則表達式也匹配包含超過一個大括號對的字符串......我錯過了什麼?
您可以使用此:
^[^{}]*\{[^}]*\}[^{}]*$
說明:
^[^{}]* // Match 0 or more occurrences of character other than [{}]
\{ // Match a `{`
[^}]* // Match 0 or more occurrences of character other than }
\} // Match a `}`
[^{}]*$ // Match 0 or more occurrences of character other than [{}]
你需要採取嵌套括號或大括號不匹配的照顧太
@Downvoter。請注意評論。 –
如果我只想要大括號之間的內容呢?我已經嘗試過^ [^ {}] *(?<= \\ {)[^}] *(?= \\})[^ {}] * $但它不起作用 – j3d
只需移動內容在上面的正則表達式的'{'和'}'中捕獲組。你正在使用環視,這就是它失敗的原因。使用'^ [^ {}] * \ {{[^}] *)\} [^ {}] * $',並獲取捕獲的組1。 –
如果你正則表達式,荷蘭國際集團的整體變量包含所有三行,這就是你要找的東西:
(\{.*?\})_*(?:\{)*
輸出將包含您正在尋找的內容。
這需要「s」標誌//點全部匹配。
下劃線只是一個例子......任何角色都是可能的。 – j3d
您可以使用.NET這種模式與多模式:
(?<=^(?>[^{\n]*))\{[^}]*\}(?=[^{\n]*$)
如何無與倫比的括號處理?例如,'myString _} {}'或'myString _ {} _ {' – SheetJS
您是整個段落還是逐行? –