2016-02-01 25 views
-1

我想構造Regex但它不起作用。誰能幫忙?如何構建正則表達式模式Swift

我有一個字符串,其中我想刪除以下字符:

* _- + =#:> < & [] \ n上

並且還指示以除去所有的文字(/)

之間的代碼是belkow:

if let regex = try? NSRegularExpression(pattern: "&[^*_-=;](\\)*;", options: .CaseInsensitive) { 
let modString = regex.stringByReplacingMatchesInString(testString, options: .WithTransparentBounds, range: NSMakeRange(0, testString.characters.count), withTemplate: "") 
print(modString) 

}

+1

通過https://regex101.com測試你的正則表達式,這是因爲失敗。你確定你的正則表達式嗎? – Larme

+0

@Larme不!這就是爲什麼我在Stack中尋求幫助:) ..我的正則表達式有問題。這是我需要用空格替換* _- + =#:><&[] –

+0

使用Do-Try-Catch帶有一個錯誤變量而不是'try?',並且會出現一個很好的錯誤消息,解釋正則表達式是無效。每日課程:不要忽略錯誤消息。 :) – Moritz

回答

2

您可以使用

"\\(/[^)]*\\)|[*\r\n_+=#:><&\\[\\]-]" 

regex demo

\\(/[^)]*\\)替代涉及(/)[*_+=#:><&\\[\\]-]之間的所有文本將匹配所有你需要匹配單個字符。

請注意,正則表達式中的連字符必須是雙轉義的,或者放置在字符類的開始或結尾。您的正則沒有工作,因爲它創造了一個無效的範圍:「 - 」字符

enter image description here

+0

謝謝。忘了包括,我的字符串有新行\ n我也是要代替的。我會在哪裏添加它? –

+0

我更新了答案。加上'\ r'和'\ n' - 以防萬一。 –

+0

令人驚歎的,謝謝!所有的作品都是完美的,只有一個仍然存在'''我該如何去除它? –