2015-10-20 64 views
1

我有這樣的代碼:(。)正則表達式的代碼構成

Dim builder As New System.Text.StringBuilder 
       table.Rows.Cast(Of DataRow).ToList() _ 
        .ForEach(Sub(row) 
           builder.AppendLine(String.Join("|", _ 
           row.ItemArray.Select(Function(value) String.Format("{0}", Regex.Replace(value, "[^A-Za-z0-9\-\/\ ]", "")).Trim()))) 
          End Sub) 

但這個表達式刪除我的價值,我不想刪除我點values.becouse一些價格我越來越喜歡(3.75,4.25),所以我怎麼可以寫代碼允許點

+1

在''''之前加上'.'字符。 – npinti

+0

我猜你可以使用['[^ A-Za-z0-9 -/\。] |(?<!\ d)\。(?!\ d)'](http://regexstorm.net/tester p =%5B%5EA-ZA-z0-9-%2F%5C +%5D%7C(%3F%3C%!5CD)%5C(%3F%!5CD)I = -i + +時許得到像+ +(3.75%2c4.25)%2cso +如何+ I + +可以寫+代碼+允許+點。&R =)。對你起作用嗎? –

+0

@npinti代碼爲我工作得很好..感謝很多 –

回答

0

既然你想在特定的上下文中只保留點,你需要首先添加點到否定字符類,然後如果未包含數字,則添加與點匹配的替代方法。如果它包含數字,它應該被刪除/替換。

這裏是正則表達式:

[^A-Za-z0-9/ .-]|(?<!\d)\.(?!\d) 

demo

注意,我搬到了連字符的字符類的末尾只是因爲它是最好的做法(這樣,你就不必逃避它),並且沒有必要逃離空間和正斜線。