我有點問題,因爲我是一個正則表達式新手。如果它很重要,我使用.NET的Regex類。否定字符類匹配字符序列
首先我使用正則表達式中的數據的描述:
這裏是我的表達:
(".*[^".]);(.*")
這這兩條線相匹配(他們是從較大的行的一部分在電腦主機一臺,但基本上將是這個樣子):
例1:7906143476.;180.;903.;1.;1970.;8.;42.;1.;327.;"SST9001";"S;T GORANS SJH "
實施例2:2.;"1;AVD INGENJOR ";"N";"J";" ";
而且也能夠匹配這個(我想它不是沒有匹配):
;"U";33.75;777.;" ";
正則表達式的含義是找到所有分號(;)內引號(「)並用冒號(:)代替。在引號前後不一定總是有分號(如例1)。我想輸出是:
7906143476.;180.;903.;1.;1970.;8.;42.;1.;327.;"SST9001";"S:T GORANS SJH "
2.;"1:AVD INGENJOR ";"N";"J";" ";
最後一行應保持不變,因爲它有一個點和分號之前的任何數量的數字()。
我希望能夠用一個正則表達式匹配所有這些可能的行。我已經有了多個正則表達式的解決方案,但我想要一個更好的方式來做到這一點。我不太瞭解負面/積極的前瞻/背後,但我有一種感覺,那就是解決方案在這個領域的某個地方。
我首先想到的是在否定角色類內部組合一個旁邊,這樣我就可以否定0.75,這是我不想匹配的第一組$ 1。它可以是任何數字,而不是75。
任何幫助都會很棒,因爲我對正則表達式根本不擅長。
謝謝!
謝謝,作品魅力!需要閱讀我認爲的Friedl書。 此外,感謝您提供有關代碼的出色評論,非常適合幫助理解。 – 2011-03-25 15:12:39
是你確定,它工作嗎?..我已經測試過與拉德正則表達式設計器http://www.radsoftware.com.au/regexdesigner/,它不工作.. – 2011-03-25 15:18:29
是啊,每次工作對我來說,什麼字符串是你用?測試? – 2011-03-25 15:25:19