2016-05-06 8 views

Antwort

1

Aufbauend auf @ Alberts Antwort, ist diese Methode nicht über das Platzproblem:

select regexp_replace('..agsb', '^(\.+)([^. ])', '\1 \2') as output 
from dual; 
+0

ein Problem stoppt, wenn es keinen abschließenden Punkt gibt, fügt er Leerzeichen für andere Punkte auch hinzu, zum Beispiel abc.cd wird abc. cd, sollte es bleiben abc.cd – Sameer

+0

@Sameerbetia was sind die gültigen Bedingungen für das Hinzufügen von Leerzeichen nach Punkten? Gibt es eine minimale/maximale Anzahl gültiger Punkte? Was kann den Punkten vorausgehen? z.B. "fügen Sie ein Leerzeichen nach zwei oder bis zu vier Punkten hinzu, wenn sich die Punkte am Anfang der Zeile oder nach einer offenen Klammer befinden". Sie müssen genau sein, wenn Sie fragen, um eine Antwort zu bekommen, die zu Ihrer Frage passt :) –

+0

Entschuldigung für die unvollständige Bereitstellung von Informationen – Sameer

0

Verwenden regexp_replace für diese Anforderung.

select regexp_replace('..agsb', 
       '(\.+)(.+)', 
       '\1 \2') as output 
from dual; 
+0

was, wenn es schon Raum zwischen einem Punkt zum Beispiel ist. aab wird es werden. aab, wie man dieses – Sameer

0

Anstatt für den Start des Wortes Wild-Card-Matches verwenden, können Sie explizit die volle entsprechen -stop \. und Wort (entweder [A-Za-z] oder, permissiv, \w) Zeichen. Wie folgt aus:

SELECT REGEXP_REPLACE('..abc', '^(\.+)([A-Za-z])', '\1 \2') 
FROM DUAL 

Wenn es andere führende Zeichen lang sein (und nicht nur voll Stationen), dann können Sie tun:

SELECT REGEXP_REPLACE('--abc', '^([^A-Za-z]*[^ A-Za-z])([A-Za-z])', '\1 \2') 
FROM DUAL; 
Verwandte Themen