java - 获取单引号或空格之间的字符串

标签 java regex

我希望有一个正则表达式,它给我 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/

相关文章:

java - 与 Oracle RECORD、TABLE 和 OBJECT 类型一起使用的 JDBC

java - 如何使用 Junit 测试在数据库中插入记录的 void 方法?

java - 在 Jackson 中使用自定义序列化器序列化嵌套对象时出现 JsonGenerationException

Java 与泛型类型相当

regex - 在 awk 中使用非精确匹配合并两个文件

javascript - 如何检查url字符串javascript中是否存在url方案

Ruby 将字符串 ($100.99) 转换为 float 或 BigDecimal

javascript - 一个奇怪的正则表达式问题

javascript - 验证输入仅包含数字和点后的小数

java - Excel 生成 [Java] - 条形图 - 启用多类别标签