Разбить строку с символами% "в groovy - PullRequest
0 голосов
/ 09 апреля 2020

Например, у нас есть тест имени строки, как показано ниже

def test = "HAVING first_name like "%Hello,Ram%" AND last_name like "%XYZ%",order by id asc,name desc"

Итак, после разбиения я хотел бы получить результат, подобный

test1 = HAVING first_name like "%Hello,Ram%" AND last_name like "%XYZ%"

test2 = order by id asc,name desc

Как разбить такие строки в груое? Я попытался разделить его, проверив contains(",") и используя функцию split, но он также разделит "%Hello,Ram%", что не является необходимым результатом

def a = 'HAVING first_name like "%Hello,Ram%" AND last_name like "%XYZ%",order by id asc,name desc'

def v = a.contains(",")

if(v){
 a.split(",")
 println a
}​​​

1 Ответ

0 голосов
/ 10 апреля 2020

Судя по вашим комментариям, вы действительно хотите найти запятые, которые не находятся внутри разделителей% xxx%, и разделить их. Фактически это дубликат Regex найти запятую, а не внутри кавычек , которая имеет больше информации о том, как работает регулярное выражение.

def r = "(?!\\B%[^%]*),(?![^%]*%\\B)"
def test = """HAVING first_name like "%Hello,Ram%" AND last_name like "%XYZ%",order by id asc,name desc"""

def result = test.split(r)

В этом ваш result будет массив строк (Я не цитирую их здесь, для ясности):

[
  HAVING first_name like "%Hello,Ram%" AND last_name like "%XYZ%"
  order by id asc
  name desc
]

В своем комментарии я пытался подчеркнуть, что запятая между c и именем не находится внутри знаков процента, и для этого также будет разбито.

...