正则表达式匹配整数、小数和分数

bor*_*per -8 .net regex

我正在寻找一个可以匹配字符串中的整数、小数和分数的正则表达式:

这里有些例子

11.325 x 55.65
11x13
11”x13”
11” x 13”
11 3/8 x 15 7/8 
11 3/8” x 15 7/8“
Run Code Online (Sandbox Code Playgroud)

上面例子的解释:

  1. 两位小数
  2. 两个整数
  3. 两个带引号的整数表示英寸
  4. 同上,但有空格
  5. 两个整数,每个后面跟一个分数
  6. 与上面相同,在英寸的分数后加引号

到目前为止,我已经想出了可以匹配任何数值(即整数和小数)的代码,但我仍然坚持使用分数。

Dim matches = Regex.Matches(curCellVal + "", "[\d.]+")
Run Code Online (Sandbox Code Playgroud)

上面的代码给了我 6 个匹配项11 3/8” x 15 7/8“,我需要它给我 2 个。

我不擅长正则表达式,所以任何帮助将不胜感激。

我的首选语言是 VB.net。

bra*_*ipt 5

试一试:

(\d+[\/\d. ]*|\d)
Run Code Online (Sandbox Code Playgroud)

http://regex101.com/r/oO9yI9

将来,我建议让您的问题更清楚,这样我们才能真正了解您要做什么——提供输入、预期输出并包括您正在使用的编程语言。

vb.net 是 PCRE 兼容的,所以你应该可以使用这个:

Dim regex As Regex = New Regex("(\d+[\/\d. ]*|\d)")
Dim match As Match = regex.Match("11.325 x 55.65")
If match.Success Then
    Console.WriteLine(match.Value)
    # this matches, so you'll get a value
End If
Run Code Online (Sandbox Code Playgroud)