2016-09-06 6 views
0

Как заменить запятые и правые круглые скобки в то же время, , ') с ), в заводной? Я попытался replaceAll с двойным побегомGroovy: Заменить комбинацию, и)

value = "('cat','rat',',')"; 
//Replace ,') with) 
value = value.replaceAll('\\,')',')'); 

Пробовал это не повезло How can I replace a string in parentheses using a regex?

How to escape comma and double quote at same time for CSV file?

+0

Попробуйте ['значение.replaceAll (" (, | ^) ',' "," ")'] (http: // ideone.com/9vKmGs), если вы хотите удалить все значения, равные '', ''как с начала строки, так и внутри нее. –

ответ

2

Ваш вопрос немного cofusing, но заменить ,') вам не нужны побеги вообще. Просто используйте

def value = "('cat','rat',',')"; 
println value.replace(",')", ")"); // ('cat','rat',') 

Однако, я думаю, что вы хотите, а этот результат ('cat','rat'). Правильно?

Если да, то вы можете использовать следующий код, используя Pattern:

import java.util.regex.Pattern 

def value = "('cat','rat',',')"; 
def pattern = Pattern.compile(",'\\)"); 
def matcher = pattern.matcher(value); 
while (matcher.find()) { 
    value = matcher.replaceAll(")"); 
    matcher = pattern.matcher(value); 
} 
println value; // ('cat','rat') 

Объяснение:

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

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