Regex.replace问题

时间:2014-05-07 20:23:06

标签: regex vb.net

首先,这是一个非常常见的主题的重复,但我有具体的问题,我在这里和其他地方在网上发现的一切似乎都没有改变我的结果,所以我发布了。希望有人可以快速浏览一下并告诉我我做错了什么......

尝试使用REGEX.Replace从索引搜索中删除文件名和blurbs中的奇数字符。我需要保留句号,下划线和连字符......基本上我知道我需要的唯一字符是双引号,<和s> ...所以这里是一行代码......

Dim replaced As String = System.Text.RegularExpressions.Regex.Replace(str, "[^A-Za-z0-9_. ]+", " ")

它仍在过滤掉句号,连字符和下划线。不知道为什么。我已经尝试在符号之前添加\字符,没有变化......所以就像JS.Slider作为JS Slider回来一样,无论我在网上哪个奇怪的示例表达式...都可以有人真正简要解释正则表达式是如何工作的(特别是我怎么弄错了)或解释一个快速的过滤方式而不会丢失句号等?

2 个答案:

答案 0 :(得分:1)

您可以尝试使用spacedot unicode字符:

ResultString = Regex.Replace(SubjectString, "[^\w\u002E\u0020\u00A0]+", "X")

正则表达式解释:

[^\w\u002E\u0020\u00A0]+

Match a single character NOT present in the list below «[^\w\u002E\u0020\u00A0]+»
   Between one and unlimited times, as many times as possible, giving back as needed (greedy) «+»
   A word character (letters, digits, and underscores) «\w»
   Unicode character U+002E «\u002E» (dot)
   Unicode character U+0020 «\u0020» (space)
   Unicode character U+00A0 «\u00A0» (space)

答案 1 :(得分:0)

删除这些字符"<>执行此操作

Dim ResultString As String
Try
    ResultString = Regex.Replace(SubjectString, "[""<>]", "", RegexOptions.Multiline)
Catch ex As ArgumentException
    'Syntax error in the regular expression
End Try