[英]Java String Split with delimiters attached to the characters between demiliters
我喜歡String
Client Name:##USERNAME## Age:##AGE## xyzed
我想拆分是這樣的
[Client Name:][##USERNAME##][ Age:][##AGE##][ xyzed]
我試過這個正則表達式(?=(##(\\\\w+)##))
它返回了
[Client Name:][##USERNAME## Age:][##AGE## xyzed]
因為在java中,look-behind不能使用可變長度,因此無法使用
(?=(##(\\w+)##))|(?<=(##(\\w+)##))
如果您對巨大的硬編碼上限感到滿意,這將有效:
(?=##\\w+##)|(?<=##\\w{1,1000}##)
(我也刪掉了一些多余的括號)
這個:
String string = "Client Name:##USERNAME## Age:##AGE## xyzed";
String regex = "(?=##\\w+##)|(?<=##\\w{1,1000}##)";
String[] arr = string.split(regex);
System.out.println(Arrays.asList(arr));
打印:
[Client Name:, ##USERNAME##, Age:, ##AGE##, xyzed]
這是另一種選擇,但它可能對輸入過於具體:
(?=##\\w)|(?= )(?<=##)
它也有效 。
這應該工作正常,只涉及全局替換:
String Name = "Client Name:##USERNAME## Age:##AGE## xyzed";
String[] parts = Name.replaceAll(":##",":@##").replaceAll("## ",":##@ ").split("@");
System.out.println(Arrays.asList(parts));
打印:
[Client Name:, ##USERNAME:##, Age:, ##AGE:##, xyzed]
它的閱讀非常簡單,但它可能比Dukeling的答案要慢 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.