我希望有一个正则表达式,它给我 classLoader 的名称插入单引号/空白空间,但不是两者的混合。 即一些例子。 :
2014-05-21 22:05:13.685 TRACE [Core] sun.misc.Launcher$AppClassLoader@62c8aeb3 searching for resource 'java/util/LoggerFactory.class'.
预期输出 sun.misc.Launcher$AppClassLoader@62c8aeb3
2014-05-21 22:05:13.685 TRACE [Core] Class 'org.jboss.weld.metadata.TypeStore' not found in classloader 'org.jboss.modules.ModuleClassLoader@4ebded0b'.
预期输出 org.jboss.modules.ModuleClassLoader@4ebded0b
2014-05-21 22:04:34.591 INFO [Core] Started plugin org.zeroturnaround.javarebel.integration.IntegrationPlugin from /Users/endragor/Downloads/jrebel/jrebel.jar in sun.misc.Launcher$AppClassLoader@62c8aeb3
预期输出 sun.misc.Launcher$AppClassLoader@62c8aeb3
请注意,对于最后一个示例,该行以换行符结束。即前面没有任何东西。
这是我尝试过的 ".*[\\s|'](.*ClassLoader.*[^']*)['|\\s].*"
。但它不起作用。对于第一个示例,它在下面给出而不是 sun.misc.Launcher$AppClassLoader@62c8aeb3
:
sun.misc.Launcher$AppClassLoader@62c8aeb3 searching for resource 'java/util/LoggerFactory.class
如果类加载器字符串在行尾,即上面的示例 3,我的正则表达式也不会处理。我该怎么做才能考虑 '
或 \\s
但不能同时考虑这两者
最佳答案
试试这个:
String extractedValue=yourString.replaceAll("(.*)([ '])(.*ClassLoader.*?)(\\2)(.*)", "$3");
每当我们想要在一组预定义值之间提取字符串时,第一个和最后一个分隔符应该具有相同的值,我们可以使用 Backreference功能。
关于java - 获取单引号或空格之间的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24061474/