2014-09-13 16 views
6

Ich versuche, alle Interpunktion aus einem StringElixir Interpunktion Ersatz regex

String.replace(sentence, ~r[\p{P}\p{S}], "") 

mit zu entfernen, aber es ist nicht alles Interpunktion entfernen! Als anschauliches Beispiel:

iex(1)> String.replace("foo!&^%$?", ~r[\p{P}\p{S}], "") 
"foo!?" 

Was soll ich verwenden?

Antwort

14

benötigen Möglicherweise / ... / als Muster delimiters:

String.replace("foo!&^%$?", ~r/[\p{P}\p{S}]/, "") 

Das Ergebnis erklärt werden konnte, weil sonst [] würde als Trennzeichen in der Probe verwendet werden, die als Folge und führt zu \p{P}\p{S} entspricht in foo!? (siehe regex101 example)

zusätzlich eine +quantifier hinzufügen würde: ~r/[\p{P}\p{S}]+/

+0

Sie sind genau richtig! Vielen Dank. –

+0

@JoshuaHannah, du bist willkommen :) –

+0

Diese Regex wird auch entfernen Hyphen als auch wie "kooperative". @ Jonny5 kannst du deine reg ex aktualisieren, um Bindestriche nicht zu entfernen? – BenMorganIO

Verwandte Themen