找到较长的文字段落并在第n个字符上分割

时间:2018-11-28 15:12:53

标签: regex xpath

是否可以使用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 :(得分:0)

您的方法行得通,您只是错误地使用了反向引用。像这样尝试。

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

XPath Online Sample

PS:我也尝试过tokenize(text, "(?<=\G[^\s]{10})"),但是XPath / XSLT不支持必需的正则表达式功能。