簡體   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