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