2014-10-07 5 views
1

Я хотел бы найти шаблон из строки ниже. Все слова, содержащие «MATCH.TEXT3», возможно, последний, соответствующий окончательному числу.Groovy - Извлечь и отобразить подстроку из строки

{MATCH.TEXT1.1=[1, admin, 07/10/14 09:29:34], MATCH.TEXT2.2=[2, admin, 07/10/14 10:01:08], MATCH.TEXT3.3=[3, admin, 07/10/14 10:08:01], MATCH.TEXT3.4=[4, admin, 07/10/14 11:08:01], MATCH=[TEXT3]} 

Ожидаемый результат:

MATCH.TEXT3.4 

or 

MATCH.TEXT3.3 
MATCH.TEXT3.4 
+0

Что вы уже пробовали? – Opal

+0

Новичок в groovy, я сделал длинный путь, используя string.find («MATCH.TEXT3. *»), А затем разделив на «,», что приводит к нескольким значениям. –

+1

. Каков источник строки? выглядит как 'toString()' из совпадения или json. – cfrick

ответ

5

Вы можете использовать метод FindAll() на строке, чтобы извлечь лексемы, которые соответствуют заданному шаблону:

String s = '{MATCH.TEXT1.1=[1, admin, 07/10/14 09:29:34], MATCH.TEXT2.2=[2, admin, 07/10/14 10:01:08], MATCH.TEXT3.3=[3, admin, 07/10/14 10:08:01], MATCH.TEXT3.4=[4, admin, 07/10/14 11:08:01], MATCH=[TEXT3]}' 

List<String> tokens = s.findAll(/MATCH\.TEXT3(\.[0-9]+)?/) 

assert tokens == ['MATCH.TEXT3.3', 'MATCH.TEXT3.4'] 

String last = tokens.last() 

assert last == 'MATCH.TEXT3.4' 
+0

Это тоже ответствовало, но я должен был принять ответ Хаима, потому что он дал мне и последний матч, и это то, чего я ожидал –

+0

Получение последнего элемента еще проще: String last = tokens.last() Проверить обновленный образец кода. Это менее шумный имхо –

1

За последний матч:

class Finder { 
    static main(args) { 
     def str = '''<your string>''' 
     def textFinder= /(MATCH.TEXT3.\d+)/ 
     def textMatcher = str=~textFinder 
     if(textMatcher.size()>0){ 
      def lastMatch = (Integer) textMatcher.size() - 1 
      println (textMatcher=textMatcher[lastMatch][1])   
     } 
    } 
} 

Выход:
MATCH.TEXT3.4

Все вышлет это легко изменить.

+0

Именно то, что я искал, спасибо –

+0

Ответ Шимона на его очиститель. Я бы проверял его ответ. Сохраняйте мой приоритет для усилий ;-) –

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