2017-02-20 7 views
1

Я пытаюсь изолировать веревки для верблюда конкретным способом в улье. Любые смежные заглавные буквы остаются в виде блока, если только один из них не ведет к другим буквенно-цифровым символам, и в этом случае заглавная буква находится в блоке со следующей буквенно-цифровой строкой.Как добавить пробелы между группами регулярных выражений в улье?

Например, HELLOWorld должно быть HELLO World. HelloWorld5 должно стать Hello World5. HELLOWorldPeople должно стать HELLO World People. Иногда вся строка строчная. За каждой строкой следует STRING, поэтому это будет HelloWorldSTRING, но последняя часть должна быть отброшена.

Это регулярное выражение я написал, что я думаю, что дела в расщеплении слова в группы правильно, но я мог бы быть неправильно:

([A-Z]?[a-z0-9]+)+STRING|([A-Z]*)([A-Z][a-z0-9]+)*STRING 

Есть ли способ, чтобы вставить пробел между каждой группой в улье? regexp_replace, похоже, не подходит для этой проблемы, насколько я мог сказать

ответ

2

Замените каждую прописную букву, перед которой следует/следует что-то другое, кроме прописной буквы, с пробелом и самой.

hive> select regexp_replace('ThisIsHELLOWorldPeople','(?<=[^A-Z])[A-Z]|[A-Z](?=[^A-Z])',' $0'); 
OK 
This Is HELLO World People 
+0

Отметьте обновленный ответ –

0

Это на самом деле проще, чем я думал. Мне нужно было выбрать промежутки между словами, а не сами слова.

regexp_replace(regexp_extract(string_col, "(.*)STRING"), 
      "(?<=[A-Za-z])()(?=([A-Z][a-z]))", 
      " ") 
+0

То же самое здесь. Необходимо протестировать против примеров OP. –

+0

@DuduMarkovitz Это ответ OP;) –

+0

: -))) ............. –

 Смежные вопросы

  • Нет связанных вопросов^_^