2014-07-21 43 views
2

好吧,让我说我有一个字符串“猫的帽子狗”,我知道想要正则表达式匹配来自同一个字符串的猫和狗。VB.Net正则表达式匹配

所以我有这样的:

Dim myString As String = "The cat in the hat dog" 
Dim regex = New Regex("\bcat\b.*\bdog") 
Dim match = regex.Match(myString) 
If match.Success Then 
    Console.WriteLine(match.Value) 
End If 

的match.Value返回,预计“戴帽子的猫犬”。

但是我真正需要的是只是“猫狗”,没有中间的其他词语,我就卡住了。

感谢您的帮助!

如果有帮助,我想解析的字符串就像“游戏名称20_03 Starter Pack r6”,我试图将“20_03 r6”作为版本信息。目前使用“\ b \ d {2} _ \ d {2} \ b。\ br \ d”作为我的正则表达式字符串。

回答

5

你可以加上括号正则表达式的部分来创建捕捉值的组:

Dim regex As New Regex("\b(cat)\b.*\b(dog)") 

然后使用match.Groups(1).Valuematch.Groups(2).Value

+0

正是我需要的,谢谢! – Keirathi

4

你的正则表达式将是

Dim regex = New Regex("\bcat\b|\bdog\b") 

该输入字符串的字符串catdog匹配。

DEMO

对于第二个字符串,您正则表达式将

\b\d{2}_\d{2}\b|r\d 

DEMO

说明:

  • \b匹配单词边界(即单词字符和非单词字符之间的匹配)。
  • \d{2}完全匹配两位数字。
  • _匹配文字下划线符号。
  • \d{2}完全匹配两位数字。
  • \b匹配单词边界(即,单词字符和非单词字符之间的匹配)。
  • |逻辑OR运算符通常用于组合两个正则表达式模式。 this|that,这个或那个。
  • r\d字母r后跟一个数字。
+1

你可以发表downvote的原因吗?我必须学习一些东西。 –

+0

哦,那个正则表达式测试网站很不错。我不认为逻辑或门正是我所需要的,因为我无法控制字符串,并且可以由最终用户进行更改。如果两件作品都存在,我只想从中提取版本信息。应该多澄清一点。使用其他人的解决方案,但我感谢您的帮助! – Keirathi