[英]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.