我想找到一個正則表達式,如果它被用雙引號括起來,將不會匹配分隔符。但它也必須能夠處理具有單個雙引號的值。我的第一部分來與下面的表達式,其中DELIMITER
可能是任何東西,但主要是逗號,管道和雙管子:正則表達式來處理格式不正確的分隔文件
DELIMITER(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)
此處理正確格式的CSV rowlike apple, "banana, and orange", grape
。我可以分割的分隔符,得到的值:
['apple', 'banana, and orange', 'grape']
我的問題是,我可能會遇到這樣一行apple, "banana, and orange, grape
。在這種情況下,我希望得到的值:
['apple', '"banana', 'and orange', 'grape']
不過,我得到:
['apple, "banana', 'and orange', 'grape']
它基本上忽略了所有的逗號到雙引號。
我腦海中的邏輯是,如果前面加雙引號,而且前面加雙引號,我想忽略逗號。我的第一個想法是玩一下後視鏡,但由於後視鏡無法處理量詞(如果這是錯誤,請糾正我),我無法讓它工作。
我正在使用Qt QRegExp,我的理解是或多或少類似於Perl正則表達式引擎。請讓我知道是否有更多我可以提供的信息。我知道正則表達式可以根據您的設置挑剔,並且我希望我已經解釋了我正在尋找的東西!
你會在的情況下尋找:蘋果,「香蕉,橘子,葡萄,」桃,櫻桃,檸檬「爲什麼未驗證對不匹配的報價,並讓用戶解決他們的投入? – RegularlyScheduledProgramming
我希望它返回'[「香蕉,橘子,葡萄,「桃,櫻桃,檸檬」]' 我對剛剛跳過該行傾斜和線讓上游系統知道壞數據,但現在我只是好奇,看看這是否可能。要麼這篇文章會死,有人會讓我知道這是目前不可能與正則表達式只,或者這個問題將產生一個真棒表達! – rgrwatson85