Python入门(九)正则

正则表达式(重要内容)

正则

re.findall('alex','dsafsdfsafalex') 按字符串匹配那么找 把所有的结果都返回到一个列表里
re.search ("",'').group  只找到第一个符合条件的 就不继续往下找 返回一个对象,group 调用结果
re.match()      只在字符串的开始匹配 返回一个对象也用group调用
re.sub('a..x','s..b','hfjasalexdfhd')
re.compile
re.split('[j,s]','sdjksal')      通过字符j分割为两部分  j没了 早继续在子集用s分割

元字符**

. 通配符    指代任意一个字符。
^ 尖角符    只在开始匹配
$          只在结尾开始匹配
*          重复匹配
+          重复匹配 1到无穷个   b+ 对b 起作用
?         重复匹配 a?  [0-1]个a
()         重复陪陪 (1,3)  1-3个a   如果有四个a 则会匹配回3个 贪婪匹配。   (1,)  1到无穷。
[] 字符集   1'[com,cn]' 匹配这两个,哪个都可以,是或的意思。2[a-z] 代表所有英文小写字符。
           3.取消元字符的特殊功能 (\ ^ -)'[w,*]'
           4.[^t] 除了t 都能匹配  [^4,5] 非4非5都行

\          反斜杠后面跟元字符,去除特殊功能。 反斜杠跟部分普通字符实现特殊功能
\d         匹配任何十进制数,相当于[0-9]
\D         匹配任何非数字   [^0-9]
\s         匹配任何白字符   [\t\n\r\f\v]
\S         匹配任何非空白字符  [^\t\n\r\f\v]
\w         匹配任何字母数字字符 [a-zA-Z0-9]
\W         匹配任何非字母数字字符 [^a-zA-Z0-9]
\b         匹配一个单词边界,也就是指单词和空格间的位置。 r'I\b' 匹配出这个单词,而有些单词里带I就不许匹配。
把特殊意义的变为普通
\. 就是匹配的是个.

\\\\       表示一个\  或者 r'\\' 表示一个\

其他
() 以括号来分组
(as)+ 以as为一组进行匹配
例子
ret = re.search(’(?P\d(3))/(?P\w(3))’,‘weeew34ttt123/ooo’)
代码示例

//一些示例
# # ret = re.search('(?P\d(3))/(?P\w(3))', 'weeew34ttt123/ooo')
# # ret = re.search('(?P\d+)/(?P\w+)', 'weeew34ttt123/www')
# # print(ret.group())
# # print(ret.group('id'))
# # print(ret.group('name'))
# # # ?P<name> 这个是为后面内容进行分组 ,有点像字典。
# # print(1-2*((60-30)+(-40/5)*(9-2*5)))

正则实现计算器小程序

// An highlighted block
# Flage1 = True
# while Flage1:
#     source = input('输入您需要计算的')
#
#
#     def check(s):
#         Flag = True
#         if re.findall('[a-zA-Z]', s):
#             print('请您输入数字')
#             Flag = False
#         return Flag
#
#
#     # 格式化空格等函数
#     def format(s):
#         s = s.replace(' ', '')
#         s = s.replace('++', '+')
#         s = s.replace('--', '-')
#         s = s.replace('**', '*')
#         return s
#
#
#     def cal_mul_div(s):
#         # 找到乘法或者除法的两个数的式子
#         ret = re.search('\d+\.?\d*\*\d+\.?\d*',s).group()
#         # 通过split 进行分割
#         x,y = re.split('\*',ret)
#         ret1 = float(x)*float(y)
#         str(ret1)
#         s.replace(ret,ret1)
#         return s
#
#
#     def cal_add_sub(s):
#
#         return s
#
#
#     def jisuan(str):
#         if check(source):
#             str = format(source)
#             # 遇到括号
#             while re.search('\(',str):
#                 # 查找最里层括号
#                 str = re.search('\([^()]\)', str).group()
#                 # 需要进行去括号,走函数
#                 str = re.sub('\(.+\)', '.+', str)
#                 str = cal_mul_div(str)
#                 str = cal_add_sub(str)
#             return str
#
#         else:
#             str = cal_mul_div(str)
#             str = cal_add_sub(str)
#             return str

正则实现万能匹配url 的示例

// 个人示例!拷贝自行理解
# http://127.0.0.1:8000/Login
# ret = re.search('[a-zA-Z]+://[^\s]*[.com|.cn]','https://www.bai.com/shjdfhkjshdfdsauser=欢子').group()
# print(ret)
# '^(https?://\w+(?:\.[^\.]+)+(?:/.+)*/.+\.html\??(?:[^/]+=[^/]+)?(?:&[^/]+=[^/]+)*)?#?((?:/[^/]+)*)$'
# '^(https?://\w+)(?:\.[^\.]+)+(?:/.+)*/.+(\.html\?)?(?:[^/]+=[^/]+)?(?:&[^/]+=[^/]+)*?#?((?:/[^/,(\u4e00-\u9fa5)]+)*)$'
# ret = re.search('(https?://\w+)(?:\.[^\.]+)+(?:/.+)*/.+(\.html\?)?(?:[^/]+=[^/]+)?(?:&[^/]+=[^/]+)*?#?[^\u4e00-\u9fa5,/.]$','https://blog.csdn.net/wangchaoqi1985/article/details/82810471')
# print(ret.group())
# r'^(https?://\w+(?:\.[^\.]+)+(?:/.+)*/.+\.html)?#?((?:/[^/]+)*)$'
# ret = re.search(r'^(https?://\w+(?:\.[^\.]+)+(?:/.+)*/.+\.html)?#?((?:/[^/]+)*)','http://127.0.0.1:8000/Loginwangahuansjdfkjsdklhfklh旭辉哦').group()
# print(ret)
#
# string1 = 'http://127.0.0.1:8000/Loginwangahuansjdfkjsdklhfklhdsfsdhttps://blog.csdn.net/wangchaoqi1985/article/details/82810471'
# string2 = 'https://www.bai.com/shjdfhkjshdfdsauser=sddsfj'
# p = re.compile('^((https?://\w+)(?:\.[^/.]+)+(?:/.+)*/.+(\.html\?)?(?:[^/]+=[^/]+[^\u4e00-\u9fa5]+)?(?:&[^/]+=[^/]+[^\u4e00-\u9fa5]+)*?#?([^\u4e00-\u9fa5])$)')
# result1 = p.findall(string1)
# result2 = p.findall(string2)
# print(result1)
# print(result2)
# # ret= re.findall('alex', 'dsafsdfsafalex')
# print(ret)

# ret = re.findall('(^(https?://\w+)([^\.]+)+\.(?:[^\.]+)*.+(\.html\?)?(?:[^/]+=[^/]+)?(?:&[^/]+=[^/]+)*?#?[\u4e00-\u9fa5])','http://192.168.1.1')
# print(ret)
# ret = re.findall('(^(https?://)([^\.[\u4e00-\u9fa5]+)+\.(?:[^\.\u4e00-\u9fa5]+)+\.)','https://blog.csdn.net/wangchaoqi1985/article/details/82810471我曹乐https://blog.csdn.net/wangchaoqi1985/article/details/82810471')
# print(ret)

# ret = re.findall('[^\u4e00-\u9fa5]+', 'https://blog.csdn.net/wan温恩gchao我查看附件考虑i1985/article/deta我啊哈哦啊ils/82810471我曹乐')
# print(ret)
# str = ''
# for i in ret:
#     # print('%s %s'% (ret.index(i) + 1, i))
#     str += i
# print(str)
# print(''.join((a, b)))

# ret = re.findall('((https?://)([^\.+)+\.\w+\.\w+(\.)?\w+/)','https://blog.csdns.net/wangchaoqi1985/article/details/82810471我曹乐http://asdf.cggggghn.net/wangchaoqi1985/article/details/82810471http://192.168.1.1/winssf/fdsfdsf/dog.html')
# print(ret)
# print('https://blog.csdnssdfjkslj////////////sdfwer$%&&#$、net http://dsfsdaf')
# 2019.11.23
# ret = re.findall('[^/,.]+', 'nihao,woshinimabjk')
# print(ret)

你可能感兴趣的:(Python入门(九)正则)