繁体   English   中英

获取两个数字之间的单词java正则表达式

[英]Get word between two numbers java regex

我想在第一个 id 和第二个数字之前获取名称单词。 我想在 Java 正则表达式中做到这一点。

例如汽车保养或汽车电子及配件

#   Name    Id  Child nodes
1   Car Care    15718271    Browse 

2   Car Electronics & Accessories   2230642011  Browse

3   Exterior Accessories    15857511    Browse

我尝试用 .split(" ")[1] 分割行,但随后它用空格分割单词。 在一个短语中只给出一个词,例如 Car

试试这个: ^\d*[a-zA-Z &+-]*(\d*)[a-zA-Z ]*在匹配 '(\d*)' 中你会找到想要的数字。 如果数字前后的字符串有特殊字符,请将它们添加到适当的 [] 部分。 说明:'^' 表示从头开始,'\d*' 取第一个数字一次或多次,[a-zA-Z &+-] 取这些字符的字符串,(\d*) 表示希望number, [a-zA-Z ] 再次在数字后面加上一个字符串。 使用正则表达式编辑器进行尝试。

您可以使用

(?m)^\d+\s+(.*?)\s+\d{6,}\s

请参阅正则表达式演示 详情

  • (?m) - 多行选项
  • ^ - 行首
  • \d+ - 一位或多位数字
  • \s+ - 一个或多个空格
  • (.*?) - 第 1 组:除换行符之外的零个或多个字符尽可能少
  • \s+ - 一个或多个空格
  • \d{6,} - 六位或更多位
  • \s - 一个空格。

请参阅Java 演示

String s = "#   Name    Id  Child nodes\n1   Car Care    15718271    Browse \n2   Car Electronics & Accessories   2230642011  Browse\n3   Exterior Accessories    15857511    Browse";
Pattern pattern = Pattern.compile("(?m)^\\d+\\s+(.*?)\\s+\\d{6,}\\s");
Matcher matcher = pattern.matcher(s);
while (matcher.find()){
    System.out.println(matcher.group(1)); 
}

输出:

Car Care
Car Electronics & Accessories
Exterior Accessories

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM