2015-08-27 3 views
0

Я хранить содержимое файла в виде строки переменной String fileContents = new File('file location').text, строка содержит несколько строк данных, как показано нижерегулярное выражение в заводной заменить строку, начиная с несколькими - символ

Sample text 
--- Some text---- 
Another Sample text 
-- Some more text ------ 
--Again some more text 
More Sample text 

Нужна помощь в. .. 1. удаление данных, начинающихся с двух или более символов '-' (w \ o quote) до конца строки. 2. удаление текстов между несколькими символами.

Таким образом, ожидаемый результат должен быть как

Образец текста

Другой образец текста

Подробнее Пример текста

+0

, что язык? C# строка - это просто массив, который вы можете просто проверить, чтобы увидеть, что 'str [0] == '-' && str [1] == '-'' –

ответ

0

Вы можете найти с помощью этого регулярное выражение:

^\s*--+.*$ 

И заменить пустой строкой. Обязательно используйте многострочный флаг.

RegEx Demo

Код:

str = str.replaceAll("(?m)^\\s*--+.*$", ""); 
+1

Это сработало! с добавлением \ character, перед $ $ мне пришлось использовать escape-символ '\'. Спасибо! – Manjunath

0

Хитрая часть новых линий. Линии легко отфильтровываются, но вы получаете пустые строки. Этот код:

def s = '''Sample text 
--- Some text---- 
Another Sample text 
-- Some more text ------ 
--Again some more text 
More Sample text''' 

println s.replaceAll(/(?m)^--.*$/, '') 

Производит:

Sample text 

Another Sample text 


More Sample text 

Что вы можете сделать, это процесс струнный как список, так что вы можете оставить обижая линии, а затем преобразовать его обратно в строку:

println s.split(/\n/).findAll { !(it =~/(?m)^--.*$/) }.join('\n') 

Производит:

Sample text 
Another Sample text 
More Sample text 
Смежные вопросы