2015-10-20 93 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

注意,我搬到了连字符的字符类的末尾只是因为它是最好的做法(这样,你就不必逃避它),并且没有必要逃离空间和正斜线。