java - 使用正则表达式从java中的逗号分隔字符串中提取特定单词

标签 java regex

输入 - [1、1111、2020、宝马、Frontier、扩展驾驶室皮卡 2-DR、银色、16558] 我想在这里提取 BMW 并且我正在使用 (^(?:[^\\,]*\\,){3}) 这个正则表达式。 结果是 - BMW,Frontier,EXTENDED CAB PICKUP 2-DR,Silver,16558]。 有人可以帮我解决这个问题吗?提前致谢

最佳答案

由于您只能输入模式而不使用组,因此您可以使用有限重复,例如 {0,1000}在正向回顾中,因为 Java 不支持无限重复。

(?<=^\\[[^,]{0,1000},[^,]{0,1000},[^,]{0,1000},\\h{0,10})\\w{3,10}(?=[^\\]\\[]*\\])

说明

  • (?<=正向后看,断言左边的是
    • ^\[字符串开头,匹配 [
    • [^,]{0,1000},[^,]{0,1000},[^,]{0,1000},匹配除 , 之外的任何字符 3 次接下来是 ,
    • \h{0,10}匹配 0-10 次水平空白字符
  • )密切回顾
  • \w{3,10}匹配 3-10 个单词字符
  • (?=正向前瞻,断言右边是什么
    • [^\]\[]*\]匹配直到 ]
  • )关闭前瞻

Java demo

代码示例

final String regex = "(?<=^\\[[^,]{0,1000},[^,]{0,1000},[^,]{0,1000},\\h{0,10})\\w{3,10}(?=[^\\]\\[]*\\])";
final String string = "[1, 1111, 2020, BMW, Frontier, EXTENDED CAB PICKUP 2-DR, Silver, 16558]";

final Pattern pattern = Pattern.compile(regex);
final Matcher matcher = pattern.matcher(string);

while (matcher.find()) {
    System.out.println(matcher.group(0));
}

输出

BMW

关于java - 使用正则表达式从java中的逗号分隔字符串中提取特定单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61695276/

相关文章:

c# - 将 Salt 作为明文存储在包含密文的文件中

Java 正则表达式问题

javascript regexp 不允许我的表达

java - 无法使用 jsp 检索 cookie 值

java - 如何在没有 Gradle 的情况下构建 Android 应用程序

javascript - 角色替换

regex - Powershell正则表达式:如果整个字符串包含的句号既不是开头也不是结尾,则匹配整个字符串

java - Mockito 时和验证方法的区别

java - 使用 G1 时,大量 Activity 实例的分配性能会降低吗?

java - Hadoop CDH4错误:SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder"