我需要一个用于分数或整数和分数的 CLR 正则表达式,其中
1/2
是正确的
12 2/3
也是正确的
并且减号可以在任何数字之前弹出。
我首先想到了-?([0-9]* )?-?[0-9]+\/-?[0-9]+
但这似乎允许 2/7 12
例如,也是如此。
最佳答案
好吧,该正则表达式将分为两部分,(可选)整数:
(:?-?\d+ )?
和小数部分:
-?\d+/-?\d+
并且我们需要匹配完整的字符串;所以:
^(:?-?\d+ )?-?\d+/-?\d+$
测试一下:
PS> $re=[regex]'^(:?-?\d+ )?-?\d+/-?\d+$'
PS> "1/2","12 1/2","-12 2/3","-5/8","5/-8"|%{$_ -match $re} | gu
True
但是,这也允许 "-12 -2/-3"
,或者类似 "1 -1/2"
的东西,这些东西的作用并不大感觉。
预计到达时间:您原来的正则表达式也有效。它只是缺少字符串开头和结尾的 anchor (分别为 ^
和 $
)。添加这些使其正常工作。
关于regex - 分数的 CLR 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1601121/