können Sie ganze Wörter mit \b
Wortgrenze erkennen und optional Leerzeichen nach diesen Worten mit \s*
(1+ Leerzeichen), können Sie auch greifen. Dann können wir sicherstellen, dass keine führenden Leerzeichen mit .stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())
übrig sind.
Beachten Sie auch, dass Strings in Swift ist C-Strings (Unterstützung Escape-Sequenzen) und da die regex speziellen Meta-Zeichen müssen mit einem Backslash maskiert werden, Sie müssen, um tatsächlich die Schrägstriche im Muster verdoppeln (dh \s
->"\\s"
) .
Hier Swift 2.1 Beispielcode:
var s = "a match a"
var out_s = ""
if let regex = try? NSRegularExpression(pattern: "\\ba\\b\\s*", options: .CaseInsensitive) {
out_s = regex.stringByReplacingMatchesInString(s, options: .WithTransparentBounds, range: NSMakeRange(0, s.characters.count), withTemplate: "")
print("\""+out_s.stringByTrimmingCharactersInSet(
NSCharacterSet.whitespaceAndNewlineCharacterSet()
)+"\"")
}
Er druckt "match"
.
Beachten Sie auch, dass options: .CaseInsensitive
eine Übereinstimmung zwischen Groß- und Kleinschreibung durchführt. Verwenden Sie options: []
, um die Suche nach Groß- und Kleinschreibung zu machen.
Nun, wenn Sie eine Liste der Determinativen haben, verwenden Wechsel:
"\\b(?:an?|the)\\b\\s*"
Dieser Ausdruck passt auf a
, an
oder the
mit 0+ Leerzeichen folgt.
Was ist Ihr erwartetes Ergebnis? –
Ergebnis sollte sein: '' 'match'''' – Arti
Wenn ihre Engine _assertions_ unterstützt, verwenden Sie eine Regex wie diese' (? sln