Как найти и заменить пробел между цифрами в строковом столбце?

Мне нужно найти и заменить любой пробел между цифрами в длинной строке, используя регулярное выражение.

Я пробовал использовать регулярное выражение, такое как [0-9][\s][0-9], а затем regexp_replace, например .withColumn('free_text', regexp_replace('free_text', '[0-9][\s][0-9]', '')). Однако регулярное выражение соответствует 1(space)4, где я хотел бы иметь только (space)

Вот пример:

Что у меня: "Hello. I am Marie. My number is 768 990"

Что бы я хотел иметь: "Hello. I am Marie. My number is 768990"

Спасибо,


person MVachelard    schedule 03.06.2019    source источник


Ответы (2)


Вот один из способов сделать это с помощью групп захвата:

.withColumn('free_text', regexp_replace('free_text', '([0-9])\s([0-9])', '$1$2'))

Идея здесь состоит в том, чтобы сопоставить и две цифры, разделенные пробелом между ними. Затем мы можем заменить только двумя соседними цифрами.

person Tim Biegeleisen    schedule 03.06.2019

Ваш шаблон соответствует цифре, пробельному символу и цифре. Обратите внимание, что \s также соответствует новой строке.

Если поддерживается, вы можете использовать поисковые запросы вместо сопоставления цифр:

(?<=[0-9])\s(?=[0-9])


.withColumn('free_text', regexp_replace('free_text', '(?<=[0-9])\s(?=[0-9])', ''))
person The fourth bird    schedule 03.06.2019
comment
Не уверен, что эта функция поддерживает поисковые запросы. Но, глядя на эту страницу, regexp_extract принимает регулярное выражение Java. - person The fourth bird; 03.06.2019