2017-09-20 57 views
-2

我想做一個正則表達式來匹配字符串中的多個{花括號}大括號。做一個正則表達式

{text1}是{text2}和{if {xxx} else {xxx}}。

如果我使用{。*}它將匹配第一個{和最後一個},並且所有之間沒有單獨匹配。

我需要這個以阻止在這種情況下{text1} {text2}和{if {xxx} else {xxx}}不需要觸碰的部分,但將詞語「the」保留爲「」和「解鎖。

+1

你試過了什麼? – Sand

+0

不完全確定這裏要問什麼。 _但是如果你只對匹配「內部」捲曲感興趣,可以考慮'\ {[*}] + \}' – jensgram

回答

0

首先,您需要跳過大括號\{\}。其次,你需要使用「不情願的量詞」而不是「貪婪的量詞」。 .*將匹配儘可能多的字符,受正則表達式整體匹配的影響,而.*?將匹配儘可能少的字符。所以你想要類似\({.*?\})*

您最初標記了問題XML,雖然在問題中沒有進一步提及XML。如果此正則表達式用於XML模式(XSD),請注意XSD正則表達式不支持不情願的量詞。在這種情況下(也可能是一個好主意)的替代方案是將.替換爲[^}],它匹配除了右大括號之外的所有內容。

如果你想分析一個包含嵌套花括號的字符串,那麼正則表達式不適合作業:你需要編寫一個分析器。

相關問題