簡體   English   中英

正則表達式 Java 由星號分割的字符串

[英]Regex Java String Split by Asterisk

需要幫助。

line.split("*");

我使用這行代碼將一個字符串拆分為一個星號標記。 但是,我的編譯器出錯了。 它說,“無效的正則表達式:懸掛元字符'*'”

如何解決這個問題? 提前致謝。

*在正則表達式中具有特殊意義。 你必須逃避它。

line.split("\\*");

試試這個語句:

line.split("\\*");

這是因為您使用了“*”,即正則表達式。 如果你想使用這個角色,你需要輸入這樣的東西:

line.split("\\*");

*是正則表達式中的元字符。 它用於匹配 0 個或多個元素。 如果您想將*用作普通字符而不是特殊字符(即跳過其作為元字符的行為),則在它之前添加轉義字符。

例如: String[] split = line.split("\\\\*");

希望這可以幫助。

如下所示, *有特殊含義,零次或多次

貪婪的 不情願的 所有格 意義
X? X?? X?+ X,一次或一次都沒有
X* X*? X*+ X,零次或多次
X+ X+? X++ X,一次或多次
X{n} X{n}? X{n}+ X,恰好 n 次
X{n,} X{n,}? X{n,}+ X,至少n次
X{n,m} X{n,m}? X{n,m}+ X,至少n次但不超過m次

因此,您需要使用\對其進行轉義。 但是, \也是一個特殊字符,因此您需要添加一個額外的\來轉義\ 因此,所需的模式變為\\*

String[] arr = line.split("\\*");
System.out.println(java.util.Arrays.toString(arr));

用這個

" String data="瑪尼*庫姆";

String []value= data.split("\\*");

" 輸出將是這樣的:

value[0]= "Mani";
value[1]= "Kum";

暫無
暫無

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

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