2011-04-06 21 views
1

我從來不懂如何創建正則表達式,現在我需要一個不錯的表達式。如果有人知道如何做到這一點,那將會很棒。VB.net中的正則表達式問題,我該如何匹配?

我需要這些實施例與一個正則表達式匹配,並且然後第三逗號之前附加文本: 實例:

1.

與Orjan ,,; Svensson的,,,,,,然後將其 繼續這樣

需求,成爲:

與Orjan ,,; SvenssonNEWTEXTHERE ,,,,,和 然後繼續像這樣

2.

帕特里克,在曼,黑,,,,,,,,,然後 繼續這樣

需求,成爲:

帕特里克,在曼,BlackNEWTEXTHERE ,,,,,,,,,和然後 繼續這樣

如果我想使用通配符來做到這一點是這樣的:

*,*,*,* 

而且我想只是最後一個逗號之前添加文字。但我仍然需要整個字符串,因此文本可以添加到那裏,我不希望添加的文本之後出現的字符消失。

這是一個.CSV聯繫人文件順便說一句,所以你更好地理解文本的結構。

這可能嗎?

回答

1

爲CSV場,即「不包含逗號任何文本」正則表達式,爲[^,]*,如果你想跳過第三場結束時,您將使用

[^,]*,[^,]*,[^,]* 

現在,如果要修改字符串,你可以使用像

Dim str = "Örjan,,;Svensson,,,,, and then it continues like this" 
Dim re As New Regex("[^,]*,[^,]*,[^,]*") 
Dim pos = re.Match(str).Length 

現在你已經得到了你想要把更多的字符串中pos的位置,你可以做任何你想用它。

請注意,CSV文件可以一般包含包含文字逗號並需要引用的字段(例如Patric,"The,Man",Black,...)。它甚至可能包含換行符,這使得很難正確解析,特別是使用正則表達式(以上代碼不適用於這些數據)。你能確定你的CSV文件不包含帶引號的字段嗎?

+0

爲了使其與上面的例子中的引文相似,請將表達式更改爲'[^,] *(,[^,] *?(?!「)){2}'。 – 2011-04-06 21:10:17

+0

現在,我有150個聯繫人,但我想我不能確定他人和我的未來:\ – Charkel 2011-04-06 21:27:51

+0

非常感謝你btw它工作:) – Charkel 2011-04-07 00:22:11