2017-01-25 56 views
0

我想用正則表達式來實現正則表達式(?<!\\{)\\[[a-zA-Z0-9_]+\\](?!\\})去正則表達式,負面看未來

匹配值會像[ua][ua_enc]和無與倫比的應該是{[ua]}{[ua_enc]}

負先行在Go不支持,什麼可能是這種情況的另一種表達?

+1

解決方法取決於最終要實現的內容,替換或提取文本。您可能最有可能使用['(^ | [^ {])(\ [\ w + \])([^}] | $)'](https://regex101.com/r/sk3cwV/2)。 –

回答

2

對此沒有別的表達方式。使用普通的(?:[^{]|^)(...)(?:[^}]|$)來捕獲預期的匹配並斷言前面的和下一個字符不是花括號將會很好用:您將需要使用第一個捕獲組而不是完全匹配,並且當只有一個兩個匹配之間的單個字符(例如[foo]_[bar])。最好的方法是使用FindAllStringSubmatchIndex並手動檢查上一個和下一個字符,以確保它們不是正則表達式之外的大括號。