найти длинные текстовые отрывки и разбить на n-й символ - PullRequest
0 голосов
/ 28 ноября 2018

Есть ли способ с помощью xpath найти слова с 30+ символами и добавить пробел после каждого n-го символа?

пример ввода:

<root>
    <text>Lorem ipsum dolor sit ametametamet. E Atveroeoseaccusametjustoduodoloresetearebum. Stet clita kasdameta.</text>
</root>

желаемый выход

Lorem ipsum dolor sit ametametamet. E Atveroeose accusametj ustoduodol oreseteare bum. Stet clita kasdameta.

В настоящее время у меня есть этот рабочий раунд

replace(/root/text, '([^ ]{10})', concat('$1', ' '))

, который дает

Lorem ipsum dolor sit ametametam et. E Atveroeose accusametj ustoduodol oreseteare bum. Stet clita kasdameta. 

Я думал о комбинировании двухзаменить функции, но это не даст желаемого результата.

replace(/root/text, '([^ ]{30})', replace('$1', '(([^ ]{10}))', concat('$2', ' ')))

создает исходную строку

Lorem ipsum dolor sit ametametamet. E Atveroeoseaccusametjustoduodoloresetearebum. Stet clita kasdameta.

1 Ответ

0 голосов
/ 29 ноября 2018

Вы подходите, вы только неправильно поняли обратные ссылки.Попробуйте это так.

replace(/root/text, '[^ ]{30}', replace('$1', '[^ ]{10}', concat('$0', ' ')))

Пример XPath Online

PS: я также пробовал tokenize(text, "(?<=\G[^\s]{10})"), но XPath / XSLT не поддерживает требуемые функции регулярных выражений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...