[英]Java split based exact regex that matched
所以我有此代碼用於演示目的:
String input = "abcRANDOM STRINGabc";
String arr[] = input.split("abc");
System.out.println(Arrays.toString(arr));
// output: [, RANDOM STRING]
arr = input.split("(?=(abc))|(?<=(abc))");
System.out.println(Arrays.toString(arr));
// output: [abc, RANDOM STRING, abc]
arr = input.split("(?=([abc]+))|(?<=([abc]+))");// wrong syntax
System.out.println(Arrays.toString(arr));
// output: [a, b, c, RANDOM STRING, a, b, c]
第一個將拆分為“ abc”的完全匹配項,但不返回匹配項,從而導致一個空單元格。
第二個將完全匹配“ abc”,但不會失去比賽。
我想要第三版的修改版或完全不同的東西,並且不會丟失不確定數量的[abc]序列。
例如,如果我有此字符串“ aaaaabbRANDOMSTRINGabcabc”的預期輸出:[aaaaabb,RANDOMSTRING,abcabc]
這有效:
String input = "aaaaabbRANDOMSTRINGabcabc";
String arr[] = input.split("(?<=[abc])(?![abc])|(?<![abc])(?=[abc])");
System.out.println(Arrays.toString(arr));
// output: [aaaaabb, RANDOMSTRING, abcabc]
您正在分裂這樣一個點:
[abc]
開頭,而不是[abc]
或 [abc]
,后面是[abc]
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.