Как выкрутить имя класса из этого? - PullRequest
1 голос
/ 07 февраля 2020

Итак, представьте, что у меня есть большая длинная строка и внутри нее, у меня есть этот фрагмент текста ...

(BlahUtils.loggerName(MyClass.class.getName())

Я хочу извлечь "MyClass".

Если я сделаю:

def matcher1 = test =~ /MyClass/
matcher1[0]

Я получу это. Но тогда MyClass может быть чем угодно, и это то, что я хочу извлечь. Как мне это сделать?

Ответы [ 2 ]

2 голосов
/ 07 февраля 2020

Вы можете использовать

/(?<=loggerName\()\w+(?=\.class\b)/

См. Демоверсию regex

Подробности

  • (?<=loggerName\() - прямо перед, должно быть loggerName( подстрока
  • \w+ - 1+ слов символов
  • (?=\.class\b) - сразу после, должно быть .class как целое слово.

См. Groovy демо :

String test = "(BlahUtils.loggerName(MyClass.class.getName())"
def m = (test =~ /(?<=loggerName\()\w+(?=\.class\b)/)
if (m) {
    println m.group();
}
1 голос
/ 07 февраля 2020

Простая задача:

'(BlahUtils.loggerName(MyClass.class.getName())'.eachMatch( /loggerName\(([^\(\)\.]+)/ ){ println it[ 1 ] }

дает MyClass

...