Regex 如何从中正则化类名?
想象一下,我有一条长长的绳子,里面有一段文字Regex 如何从中正则化类名?,regex,groovy,Regex,Groovy,想象一下,我有一条长长的绳子,里面有一段文字 (BlahUtils.loggerName(MyClass.class.getName()) 我想提取出“MyClass” 如果我这样做: def matcher1 = test =~ /MyClass/ matcher1[0] 我明白了。但是我的类可以是任何东西,这就是我想要提取出来的。我该怎么做?您可以使用 /(?<=loggerName\()\w+(?=\.class\b)/ 你可以用 /(?<=loggerName\()\w
(BlahUtils.loggerName(MyClass.class.getName())
我想提取出“MyClass”
如果我这样做:
def matcher1 = test =~ /MyClass/
matcher1[0]
我明白了。但是我的类可以是任何东西,这就是我想要提取出来的。我该怎么做?您可以使用
/(?<=loggerName\()\w+(?=\.class\b)/
你可以用
/(?<=loggerName\()\w+(?=\.class\b)/
简单易懂:
'(BlahUtils.loggerName(MyClass.class.getName())'.eachMatch( /loggerName\(([^\(\)\.]+)/ ){ println it[ 1 ] }
提供了MyClass
简单易懂的功能:
'(BlahUtils.loggerName(MyClass.class.getName())'.eachMatch( /loggerName\(([^\(\)\.]+)/ ){ println it[ 1 ] }
给定
MyClass
值是否始终跟在后面。class
?它总是按字母顺序吗?检查,test=~/\w+(?=\.class\b)/
这是一个好的开始。但是字符串中可能还有其他的instances.class,所以loggerName(也很重要。我尝试defm=(test=~/\w+(?=loggerName\(\.class\b)),如果(m){println m.group();}
,但这不起作用,test=~/(?值是否总是跟在.class
后面?是否总是按字母顺序?检查,测试=~/\w+(?=\.class\b)/
这是一个好的开始。但是字符串中可能还有其他实例.class,所以loggerName(也很重要。如果(m){println m.group(),我会尝试定义m=(测试=~/\w+(?=loggerName\.class\b)/)}
但这不起作用那么test=~/(?)?