我的字符串符合"x Packs of y"
格式,例如"15 packs of 5"
,"1 pack of 10"
等等。
我想使用正则表达式查找"x Packs of y"
并将x
放在一个变量中,y
放在第二个变量中。
有人可以建议我这样做吗?
答案 0 :(得分:4)
试试这个......
Dim foo = "15 packs of 5"
Dim match = Regex.Match(foo, "(\d+) packs? of (\d+)", RegexOptions.IgnoreCase)
Dim x = match.Groups(1).Value
Dim y = match.Groups(2).Value
Console.WriteLine("x = " & x)
Console.WriteLine("y = " & y)
更新:感谢Braj指出包/包。
答案 1 :(得分:3)
从索引1和2获取匹配的组
(\d+) packs? of (\d+)
程序中使用的字符串文字:C#(还添加了忽略大小写)
@"(?i)(\d+) packs? of (\d+)"
答案 2 :(得分:2)
在.NET中,对于ASCII数字,请使用[0-9]
,而不是\d
在.NET中,\d
匹配任何脚本中的数字,包括Thai和Klingon。假设您只想要ASCII数字0到9而不是654۳۲١८৮੪૯୫୬१७੩௮
,请使用:
Dim firstNumber As String
Dim secondNumber As String
Dim RegexObj As New Regex("([0-9]+) packs? of ([0-9]+)", RegexOptions.IgnoreCase)
firstNumber = RegexObj.Match(yourString).Groups(1).Value
secondNumber = RegexObj.Match(yourString).Groups(2).Value
<强>解释强>
RegexOptions.IgnoreCase
使其不区分大小写([0-9]+)
将一个或多个数字捕获到第1组packs?
将pack
与可选s
([0-9]+)
会将一个或多个数字捕获到第2组