簡體   English   中英

匹配的基於Java拆分的精確正則表達式

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

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