Use expresiones regulares para buscar / reemplazar subcadenas en NSString

Me gustaría usar expresiones regulares para encontrar todas las instancias de un patrón de expresión regular Ie &*; en mi cadena y eliminar eso de modo que el valor de retorno es la cadena original sin ninguna de las coincidencias. También me gustaría utilizar la misma función para unir espacios múltiples entre palabras y tener un espacio único en su lugar. No pude encontrar tal función.

Cadena de entrada de muestra

 NSString *str = @"123 &1245; Ross Test 12"; 

El valor de retorno debe ser

 123 Ross Test 12 

Si hay algo que coincida con este patrón "&* o múltiples espacios en blanco y lo reemplaza con @"";

 NSString *string = @"123 &1245; Ross Test 12"; NSError *error = nil; NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"&[^;]*;" options:NSRegularExpressionCaseInsensitive error:&error]; NSString *modifiedString = [regex stringByReplacingMatchesInString:string options:0 range:NSMakeRange(0, [string length]) withTemplate:@""]; NSLog(@"%@", modifiedString); 

Cadena que reemplaza el código usando regex en la extensión de cadena

C objective

 @implementation NSString(RegularExpression) - (NSString *)replacingWithPattern:(NSString *)pattern withTemplate:(NSString *)withTemplate error:(NSError **)error { NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:pattern options:NSRegularExpressionCaseInsensitive error:error]; return [regex stringByReplacingMatchesInString:self options:0 range:NSMakeRange(0, self.length) withTemplate:withTemplate]; } @end 

resolver

 NSString *string = @"123 &1245; Ross Test 12"; // remove all matches string NSString *result = [string replacingWithPattern:@"&[\\d]+?;" withTemplate:@"" error:nil]; // result = "123 Ross Test 12" 

o más

 NSString *string = @"123 + 456"; // swap number NSString *result = [string replacingWithPattern:@"([\\d]+)[ \\+]+([\\d]+)" withTemplate:@"$2 + $1" error:nil]; // result = 456 + 123 

Swift2

 extension String { func replacing(pattern: String, withTemplate: String) throws -> String { let regex = try NSRegularExpression(pattern: pattern, options: .CaseInsensitive) return regex.stringByReplacingMatchesInString(self, options: [], range: NSRange(0.. 

Swift3

 extension String { func replacing(pattern: String, withTemplate: String) throws -> String { let regex = try RegularExpression(pattern: pattern, options: .caseInsensitive) return regex.stringByReplacingMatches(in: self, options: [], range: NSRange(0.. 

utilizar

 var string = "1!I 2\"want 3#to 4$remove 5%all 6&digit and a char right after 7'from 8(string" do { let result = try string.replacing("[\\d]+.", withTemplate: "") } catch { // error } // result = "I want to remove all digit and a char right after from string"