正则表达式排除所有数字

时间:2017-04-24 08:03:29

标签: regex vb.net

您好我正在尝试通过VB.NET中的Regex搜索文件中的所有匹配表达式 我有这个功能:

Dim written As MatchCollection = Regex.Matches(ToTreat, "\bGlobalIndexImage = \'(?![0-9])([A-Za-z])\w+\'")
For Each writ As Match In written
    For Each w As Capture In writ.Captures
        MsgBox(w.Value.ToString)
    Next
Next

我现在有这个正则表达式:

\bGlobalIndexImage = \'(?![0-9])([A-Za-z])\w+\'

我正在尝试匹配此表单下的所有匹配项:

GlobalIndexImage = 'images'
GlobalIndexImage = 'Search'

但我也得到这样的价值观,我不想与之匹配:

GlobalIndexImage = 'Z0003_S16G2'

所以我想在我的正则表达式中简单地排除匹配,如果它包含数字。

2 个答案:

答案 0 :(得分:3)

\w速记字符类匹配字母数字 _。如果您只需要字母,请使用[a-zA-Z]

"\bGlobalIndexImage = '([A-Za-z]+)'"

请参阅regex demo

<强>详情:

  • \b - 领先的单词边界
  • GlobalIndexImage = ' - 一串文字字符
  • ([A-Za-z]+) - 第1组捕获一个或多个(由于+量词)ASCII字母
  • ' - 单引号。

enter image description here

如果您需要匹配任何Unicode字母,请将[a-zA-Z]替换为\p{L}

VB.NET:

Dim text = "GlobalIndexImage = 'images' GlobalIndexImage = 'Search'"
Dim pattern As String = "\bGlobalIndexImage = '([A-Za-z]+)'"
Dim matches As List(Of String) = Regex.Matches(text, pattern) _
                                    .Cast(Of Match)() _
                                    .Select(Function(m) m.Groups(1).Value) _
                                    .ToList()
Console.WriteLine(String.Join(vbLf, matches))

输出:

enter image description here

答案 1 :(得分:0)

要抓住所有不是数字的内容,请使用\D

所以你的正则表达式就像

\bGlobalIndexImage = \'\d+\'

但这也包括带有空格的单词。仅使用[a-zA-Z]

来获取字母
\bGlobalIndexImage = \'[a-zA-Z]+\'