在借鉴了polygenelubricants关于正则表达式的有趣尝试后,我现在尝试让.NET正则引擎为我乘法运算。
当然,这没有任何实际价值,仅仅是一个纯理论练习。
到目前为止,我已经得到了下面这个巨大的正则表达式,它应该检查字符串中1的数量乘以2的数量是否等于3的数量。
很不幸,它没有起作用,而我不知道为什么。 我已经将其注释以向您展示引擎应该执行的操作,但是我可能有错。 输出示例:
欢迎提出任何想法!
当然,这没有任何实际价值,仅仅是一个纯理论练习。
到目前为止,我已经得到了下面这个巨大的正则表达式,它应该检查字符串中1的数量乘以2的数量是否等于3的数量。
Regex regex = new Regex(
@"
^
(1(?<a>))* # increment a for each 1
(2(?<b>))* # increment b for each 2
(?(a) # if a > 0
(
(?<-a>) # decrement a
(3(?<c-b>))* # match 3's, decrementing b and incrementing c until
# there are no 3's left or b is zero
(?(b)(?!)) # if b != 0, fail
(?<b-c>)* # b = c, c = 0
)
)* # repeat
(?(a)(?!)) # if a != 0, fail
(?(c)(?!)) # if c != 0, fail
$
", RegexOptions.IgnorePatternWhitespace);
很不幸,它没有起作用,而我不知道为什么。 我已经将其注释以向您展示引擎应该执行的操作,但是我可能有错。 输出示例:
regex.IsMatch("123") // true, correct
regex.IsMatch("22") // true, correct
regex.IsMatch("12233") // false, incorrect
regex.IsMatch("11233"); // true, correct
欢迎提出任何想法!
11
情况下失败,但我还没有找到其他的失败情况。 - Joel Rondeau