簡體   English   中英

如何使用正則表達式在 Java 中找到 Substring?

[英]How to find Substring in Java using Regular Expression?

我有一個名為String mainString = "/abc/def&ghi&jkl";的字符串我需要在 java 中使用正則表達式找到 substring。 Substring 將是lastindexof("/") and indexof("&")def 如何在 java 中使用正則表達式來做到這一點?

也許是這樣的:

(?<=\/)(?=[^\/]*$).*?(?=&)
  • (?<=\/) - 正向向后看以匹配正斜杠之后的位置。
  • (?=[^\/]*$) - 帶有否定字符 class 的正前瞻,以匹配除正斜杠零次或多次后跟結束字符串 position 之外的任何內容。
  • .*? - 匹配除 newlinge 以外的任何字符零次或多次但懶惰(閱讀下一個)。
  • (?=&) - 正向前瞻以匹配字符串中的 position,后跟一個&

查看在線演示

注意:如@CarySwoveland 所述,您可以將積極的前瞻換成消極的前瞻: (?<=\/)(?..*\/)?*?(?=&) 查看演示


第二種選擇是使用捕獲組(根據@TheFourthBird):

/([^/&]+)&[^/]*$

在哪里:

  • / - 匹配文字正斜杠。
  • ( - 打開捕獲組。
    • [^/&]+ - 一個否定字符 class 匹配除正斜杠或 & 之外的任何字符至少一次。
    • ) - 關閉捕獲組。
  • & - 文字 & 符號。
  • [^/]* - 一個否定字符 class,匹配除正斜杠以外的任何內容零次或多次。
  • $ - 結束字符串 ancor。

查看在線演示


另外我不確定你是否需要正則表達式。 我對 Java 沒有任何經驗,但是通過一些谷歌搜索將其拼湊在一起:

public class Tst{    
     public static void main(String []args){
        String mainString = "/abc/def&ghi&jkl";
        String[] bits = mainString.split("/");
        String subbit = bits[bits.length-1].split("&")[0];
        System.out.print(subbit);
     }
}

返回: def

注意:甚至作為帶有嵌套split命令的單行命令: System.out.print(mainString.split("/")[mainString.split("/").length - 1].split("&")[0]);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM