您好我正在尝试通过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'
所以我想在我的正则表达式中简单地排除匹配,如果它包含数字。
答案 0 :(得分:3)
\w
速记字符类匹配字母和数字和 _
。如果您只需要字母,请使用[a-zA-Z]
:
"\bGlobalIndexImage = '([A-Za-z]+)'"
请参阅regex demo。
<强>详情:
\b
- 领先的单词边界GlobalIndexImage = '
- 一串文字字符([A-Za-z]+)
- 第1组捕获一个或多个(由于+
量词)ASCII字母'
- 单引号。 如果您需要匹配任何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))
输出:
答案 1 :(得分:0)
要抓住所有不是数字的内容,请使用\D
所以你的正则表达式就像
\bGlobalIndexImage = \'\d+\'
但这也包括带有空格的单词。仅使用[a-zA-Z]
\bGlobalIndexImage = \'[a-zA-Z]+\'