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