我试过两个问题,你能告诉我我是否对吗?
C中非负整数常量的正则表达式,其中以0
开头的数字是八进制常量,其他数字是十进制常量。
我试过0([1-7][0-7]*)?|[1-9][0-9]*
,是不是?我能匹配什么字符串?您认为034567
是否匹配且000083
匹配?
二进制数 x 的正则表达式是什么, h x + i x = j X
我试过(0|1){32}|1|(10))..
您认为像10
这样的字符串会匹配而且11
会匹配吗?
请告诉我,我是否对。
答案 0 :(得分:2)
您可以随时使用http://www.spaweditor.com/scripts/regex/快速测试特定正则表达式是否按预期运行。这与谷歌一起可以帮助你找到你想要的正则表达式。
答案 1 :(得分:1)
整数常量的正则表达式不会匹配长于两位数的基数10和长度超过三位数的八进制数(如果不计算前导零,则为2)。由于这是一个家庭作业,我把它留给你来弄清楚它有什么问题。
提示:谷歌的“正则表达式重复量词”。
答案 2 :(得分:1)
0([1-7][0-7])?|[1-9][0-9]
是错误的,因为没有重复 - 它只匹配1或2个字符的字符串。您需要的是类似0[0-7]*|[1-9][0-9]*
的内容,但不考虑十六进制(根据规范)。答案 3 :(得分:1)
问题1:
八进制数字:
以[0]开头的字符串,然后可以跟随任何数字1,2,... 7 [1-7](假设没有前导零)但在第一个实际数字后也可以包含零,所以[0-7] *(*用于重复,零次或多次)。
因此我们得到以下RegEx:0 [1-7] [0-7] *
十进制数字:
十进制数字必须没有前导零,因此从1到9 [1-9]的所有数字开始,但是在所有其他位置也允许零,因此我们需要连接[0-9] *
因此我们得到以下RegEx:[1-9] [0-9] *
由于我们有两个选项(八进制和十进制数),并且任何一个都可以,我们可以使用Alternation属性' |' :
L = 0 [1-7] [0-7] * | [1-9] [0-9] *
问题2:
快速了解费马的最后定理:
在数论中,费马的最后定理(有时称为费马猜想,特别是在旧文本中)表明没有三个正整数a,b和c可以满足等式a + bn = cn对于任何大于2的整数值。 (http://en.wikipedia.org/wiki/Fermat%27s_Last_Theorem)
因此,以下集合中n< = 2满足等式:{0,1,2} base10 = {0,1,10} base2
如果这些元素中的任何一个满足等式,我们使用Alternation | (或)
所以正则表达式可以是:L = 0 | 1 | 10但也可以是L = 00 | 01 | 10甚至是L = 0 | 1 | 10 | 00 | 01
或者可以概括为:
所以L = 0 * | 0 * 1 | 0 * 10
答案 4 :(得分:0)
max回答了第一个问题。
第二个似乎是费马最后定理的不可解的丢番图方程。如果h,i,j是非零整数,x只能是1或2,所以你正在寻找
^0*10?$
有帮助吗?
答案 5 :(得分:0)
有几种工具可用于测试正则表达式,例如The Regulator。
如果您搜索“正则表达式测试”,您会找到许多指向在线测试人员的链接。