簡體   English   中英

無法使我的正則表達式正常工作

[英]Can't get my regex to work correctly

我得到了一些用逗號分隔的數據,但是我需要逗號之間的“不分割數據”。

所以:“A,B”應為“A,B”,而A,B應分為“A”,“B”。

我遇到的麻煩是,如果行中有幾個逗號,那么空點將被忽略:A,B分為“A”,“B”但我需要它:“A”,“” ,“B”

這是我的代碼:

ArrayList<String> tokens = new ArrayList<String>();
String regex = "\"([^\"]*)\"|([^,]+)";
Matcher m = Pattern.compile(regex).matcher(line);
while (m.find()) {
    if (m.group(1) != null) {
        tokens.add(m.group(1));
    } 
    else {
        tokens.add(m.group(2));
    }
}

第一組可以工作,但我不能讓第二組工作,因為我需要:([^,] +)(除了一次或多次之外的任何東西)也沒有任何東西作為空字符串。 這甚至可能嗎?

您只需要在交替中添加另一個分支: (?<=,)(?=,)以匹配兩個逗號之間的空格。

String line = "A,,B";
ArrayList<String> tokens = new ArrayList<String>();
String regex = "\"([^\"]*)\"|[^,]+|(?<=,)(?=,)";   // <= No need for Group 2
Matcher m = Pattern.compile(regex).matcher(line);
while (m.find()) {
    if (m.group(1) != null) {
        tokens.add(m.group(1));
    } 
    else {
        tokens.add(m.group(0)); // <= Note that we can grab the whole match here
    }
}
System.out.println(tokens); 

請參閱在線Java演示

看起來像你只需要更換+*和雙引號添加到你的第二個捕獲組:

\"([^\"]*)\"|([^",]*(?!$))

檢查它是如何工作在這里

暫無
暫無

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

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