2016-05-06 2 views

ответ

1

Опираясь на @ ответ Альберта, этот метод не имеет проблемы пространства:

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

одна проблема сэр, если нет конечной точки, это добавление пробелов для других точек, например, abc.cd становится abc. cd, он должен оставаться abc.cd – Sameer

+0

@Sameersetia, каковы допустимые условия для добавления пробелов после точек? Существует ли минимальное/максимальное количество допустимых точек? Что может предшествовать точкам? например «добавить пробел после двух или до четырех точек, когда точки находятся в начале строки или после открытой скобки». Вы должны быть точными, когда вы спросите, чтобы получить ответ, который соответствует вашему вопросу :) –

+0

Извините, что не предоставил полную информацию – Sameer

0

Использование regexp_replace для этого требования.

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

, что если уже есть пространство между точкой, например. ааб станет. aab, как остановить это – Sameer

0

Вместо того чтобы использовать джокер матчи для начала слова, вы можете явно соответствовать полному -stop \. и слово (либо [A-Za-z] или, более разрешительно, \w) символов. Как это:

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

Если это может быть и другие ведущие символы (а не только полных остановок), то вы можете сделать:

SELECT REGEXP_REPLACE('--abc', '^([^A-Za-z]*[^ A-Za-z])([A-Za-z])', '\1 \2') 
FROM DUAL; 
Смежные вопросы