Как заменить специальные символы на «{» в xquery?

#xquery

#xquery

Вопрос:

Я пытаюсь удалить ‘}{‘ с помощью ‘},{‘ в xquery:

 fn:replace($text,'\}\{','\},\{')
  

и получение ошибки:

 org.apache.xmlbeans.impl.regex.ParseException: Unexpected meta character
  

Комментарии:

1. пробовал: fn:replace($string1,'[\}\{]’,’},{‘)

2. получение из строки: string_1 }{ => string_1 },{},{ ожидаемый => string_1 },{

3. Это должна быть одна обратная косая черта, а не две. Но не забывайте, что XQuery 3.0 имеет флаг «q», который означает, что все символы представляют себя, экранирование не требуется.

4. спасибо за помощь, используя xquery 1.0, я опишу цель: я создаю json, получаю строку типа: {«x»:»y»}{«x»:»z»}{«x»:»a»} необходимы {«x»:»y»}, {«x»:»z»},{«x»:»a»}

5. входные данные могут включать 3 пробела, n , t ……

Ответ №1:

Кажется простым:

 replace($text, '}{', '},{')
  

https://xqueryfiddle .liberty-development.net/nbUY4kv

Если между фигурными скобками могут быть пробелы, вы можете использовать

 replace($text, '}s*{', '},{')
  

https://xqueryfiddle .liberty-development.net/nbUY4kv/3

Комментарии:

1. привет, ваш пример, включающий нежелательный результат : ‘}’ —> ‘},{‘ , нужны только места с ‘}{‘ с /n, / t , пробелами между ними …. в результате ‘},{‘

2. Понятия не имею, где вы могли бы это получить, в xqueryfiddle. liberty-development.net/nbUY4kv/1 одна фигурная закрывающая скобка } не затронута.