正则表达式的|怎么用
import redef isNum(s):
p = re.compile(r"-?\d+")
q = re.compile(r"-?\d+\.\d+")
w = re.compile(r"-?\d+(\+|\-)\d+j")#复数形式为a+bj或a-bj
result_1 = p.search(s)
result_2 = q.search(s)
result_3 = w.search(s)
if result_1 != None and result_1.group() == s:
return True
elif result_2 != None and result_2.group() == s:
return True
elif result_3 != None and result_3.group() == s:
return True
else:
False
while True:
a = input("输入:")
if a == 'xx':
break
print(isNum(a))
我想把p,q,w变成一个,然而不管我r"-?\d+|-?\d+\.\d+|-?\d+(\+|\-)\d+j"还是r"(-?\d+)|(-?\d+\.\d+)|(-?\d+(\+|\-)\d+j)"都不行。。。。
有大佬知道该怎么把它们放在一起吗? 把题目发出来 题目是:实现isNum()函数,参数是一个字符串,如果字符串属于整数、浮点数或复数,则返回True否则返回False。
其实很容易的,只是我想用正则表达式搞一下,然后就发现不能用“|”来编译,就很奇怪 这个题这么做有点小缺陷,比如不能匹配科学计数法的表达形式啥的,我就想搞懂一下那个“|”的用法 num = re.compile(r'[+-]?\d+(\.\d+|[+-]\d+j|[+-]?\d+)?')
{:10_256:},亲测能用用,可以匹配正负整数小数复数以及e记法 本帖最后由 柿子饼同学 于 2021-3-28 19:13 编辑
这个方便你理解{:10_256:}
num = re.compile(r'''
[+-]?\d+ (?#正负整数)
(\.\d+ (?#正负整数+小数部分)
|[+-]\d+j (?#正负整数+复数部分)
|[+-]?\d+) (?#正负整数+e记法部分)
? (?#注意到了吗,小数到e记法都是一个子组,这时匹配0次就相当于匹配整数)
''', re.VERBOSE) 秋柔采梦术 发表于 2021-3-28 18:06
这个题这么做有点小缺陷,比如不能匹配科学计数法的表达形式啥的,我就想搞懂一下那个“|”的用法
Python3 如何优雅地使用正则表达式(详解四)
https://fishc.com.cn/thread-57271-1-1.html
(出处: 鱼C论坛)
这些东西可以查的
页:
[1]