簡體   English   中英

Java使用正則表達式先行拆分-字符后不跟字符

[英]Java split using regex lookahead - character not followed by character

我需要將字符串拆分為減號,以便將其排序為帶引號而不是帶引號的內容。 單引號字符用作分隔符,兩個單引號表示轉義序列,表示不得將它們用於拆分。

例如:

"111 '222''22' 3333"

應拆分為

"111", "222''22", "3333"

無論有沒有空格。

因此,我編寫了以下代碼,但是它不起作用。 也嘗試使用"\\\\'(?<!\\\\')"向后尋找,但沒有成功。 請幫忙

    String rgxSplit="\\'(?!\\')";
    String text="";
    Scanner s=new Scanner(System.in);

    System.out.println("\""+rgxSplit+"\"");
    text=s.nextLine();
    while(!text.equals(""))
    {
        String [] splitted=text.split(rgxSplit);
        for(int i=0;i<splitted.length;i++)
        {
            if(i%2==0)
            {
                System.out.println("+" + splitted[i]);
            }
            else
            {
                System.out.println("-" + splitted[i]);
            }
        }
        text=s.nextLine();
    }

輸出:

$ java ParseTest
"\'(?!\')"
111 '222''22' 3333
+111
-222'
+22
- 3333

這應該在單引號上分開(如果未加倍),並且在連續三個的情況下,它將對前兩個進行分組,並在第三個上進行分割。

String [] splitted=text.split("(?<!') *' *(?!')|(?<='') *' *");

要在單撇號上分開,請環顧撇號的兩側:

String[] parts = str.split(" *(?<!')'(?!') *");

觀看有關ideone的現場演示

暫無
暫無

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

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