Python-re中search()函数的用法详解(查找ip)

1.首先来看一下search()和find()的区别

import re
s1 = "2221155"
#search 字符串第一次出现的位置
print(re.search("1",s1))
print(s1.find("1"))

它们的输出分别是:

search()
函数返回的是查找的字符字符串中的位置
find()
函数返回的也是在字符串中的位置
目前来看两者并没有什么区别,但是**search()**函数的高级操作还在后边哦!

2.search查找ip
那么search()函数如何查找字符串中的ip地址呢来看例子
先说一种比较单一化的查找:

str1 = "192.168.111.123"
ip = re.search(r"\d\d\d\.\d\d\d\.\d\d\d\.\d\d\d",str1)
print(str1)

输出结果:

这里要首先定义好ip的格式 xxx.xxx.xxx.xxx再进行查找
但是这里知道ip是没有固定格式的,首先他的范围是 0-255,但是他可能是1位数,二位数或者三位数,这里就需要进阶了,来看下边的代码:
①确定单个数范围在0-255

re.search(r"[01]\d\d|2[0-4]\d|25[0-5]]",str)

这句代码里边的参数的意思是(| 为“或”):
第一位如果是0,1的话,后边两位随便取值
第一位如果是2的话,那第二位就得是0到4,第三位随意取值
第一位第二位如果是2和5的话,那么第三位只能是0到5了
这样就能得到字符串里第一个 0-255的值

②如果要多找几个呢?
再举个小例子:

str2 = "192168111123"
num = re.search(r"([01]\d\d|2[0-4]\d|25[0-5]){3}",str2)
print(num)

运行结果:

给查找的字符在后边加一个{n} n代表你要找几次,看例子我找的是3次,所以最后找到的值是3个挨着的0-255的数。那么重点来啦

③找到ip
看代码:

str_ip = "ssss192.168.1.1aaaa"
ip = re.search(r"(([01]{0,1}\d{0,1}\d|2[0-4]\d|25[0-5])\.){3}([01]{0,1}\d{0,1}\d|2[0-4]\d|25[0-5])",str_ip)
print(i

结果:

到此这篇关于Python-re中search()函数的用法详解(查找ip)的文章就介绍到这了,更多相关Python search()函数内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 浅谈Python中re.match()和re.search()的使用及区别

    1.re.match() re.match()的概念是从头匹配一个符合规则的字符串,从起始位置开始匹配,匹配成功返回一个对象,未匹配成功返回None. 包含的参数如下: pattern: 正则模型 string : 要匹配的字符串 falgs : 匹配模式 match() 方法一旦匹配成功,就是一个match object对象,而match object对象有以下方法: group() 返回被 RE 匹配的字符串 start() 返回匹配开始的位置 end() 返回匹配结束的位置 span()返

  • python 使用re.search()筛选后 选取部分结果的方法

    使用group()方法 b = 'hello good fine' re.search(r'^hello\s(.*)\sfine',b).group() group() 会返回匹配此正则表达式的字符串 group(1) 会返回正则表达式中第一个括号内的内容, 以此类推,group(2) 第二个括号 re.search(r'^hello\s(.*)\sfine',b).group(1) * 如果需要筛选,则要在正则表达式里把 需要筛选的东西括上 以上这篇python 使用re.search()筛选

  • python使用正则表达式的search()函数实现指定位置搜索功能

    前面学习过search()可以从任意一个文本里搜索匹配的字符串,也就是说可以从任何位置里搜索到匹配的字符串.但是现实世界很复杂多变的,比如限定你只能从第100个字符的位置开始匹配,100个字符之前的不要匹配,这样的需求怎么样实现呢?来看下面的例子,它就是指定位置开始搜索: #python 3.6 #蔡军生 #http://blog.csdn.net/caimouse/article/details/51749579 # import re text = 'This is some text --

  • Python中正则表达式match()、search()函数及match()和search()的区别详解

    match()和search()都是python中的正则匹配函数,那这两个函数有何区别呢? match()函数只检测RE是不是在string的开始位置匹配, search()会扫描整个string查找匹配, 也就是说match()只有在0位置匹配成功的话才有返回,如果不是开始位置匹配成功的话,match()就返回none 例如: #! /usr/bin/env python # -*- coding=utf-8 -*- import re text = 'pythontab' m = re.ma

  • Python-re中search()函数的用法详解(查找ip)

    1.首先来看一下search()和find()的区别 import re s1 = "2221155" #search 字符串第一次出现的位置 print(re.search("1",s1)) print(s1.find("1")) 它们的输出分别是: search(): 函数返回的是查找的字符在字符串中的位置 find(): 函数返回的也是在字符串中的位置 目前来看两者并没有什么区别,但是**search()**函数的高级操作还在后边哦! 2.

  • 对python过滤器和lambda函数的用法详解

    1. 过滤器 Python 具有通过列表解析 将列表映射到其它列表的强大能力.这种能力同过滤机制结合使用,使列表中的有些元素被映射的同时跳过另外一些元素. 过滤列表语法: [ mapping-expression for element in source-list if filter-expression ] 这是列表解析的扩展,前三部分都是相同的,最后一部分,以 if开头的是过滤器表达式.过滤器表达式可以是返回值为真或者假的任何表达式 (在 Python 中是几乎任何东西).任何经过滤器表达

  • 对pandas中apply函数的用法详解

    最近在使用apply函数,总结一下用法. apply函数可以对DataFrame对象进行操作,既可以作用于一行或者一列的元素,也可以作用于单个元素. 例:列元素 行元素 列 行 以上这篇对pandas中apply函数的用法详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们. 您可能感兴趣的文章: 浅谈Pandas中map, applymap and apply的区别

  • PyTorch中topk函数的用法详解

    听名字就知道这个函数是用来求tensor中某个dim的前k大或者前k小的值以及对应的index. 用法 torch.topk(input, k, dim=None, largest=True, sorted=True, out=None) -> (Tensor, LongTensor) input:一个tensor数据 k:指明是得到前k个数据以及其index dim: 指定在哪个维度上排序, 默认是最后一个维度 largest:如果为True,按照大到小排序: 如果为False,按照小到大排序

  • Python中 map()函数的用法详解

    map( )函数在算法题目里面经常出现,map( )会根据提供的函数对指定序列做映射,在写返回值等需要转换的时候比较常用. 关于映射map,可以把[ ]转成字符串的话,就不需要用循环打印字符串输出结果这种比较旧的方式. 在Python 3中的例子如下: 也可以用匿名函数来计算幂计算: map(lambda x:x**2,[1,2,3,4,5]) 也可以用来规范输出: name_list={'tony','cHarLIE','rachAEl'} def format_name(s): ss=s[0

  • python 常见字符串与函数的用法详解

    strip去除空格 s = ' abcd efg ' print(s.strip()) #去除所有空格 print(s.lstrip()) #去除左边空格 print(s.rstrip()) #去除右边空格 print(s) abcd efg abcd efg abcd efg abcd efg 大小写 s = 'abc defg' print(s.upper()) print(s.upper().lower()) print(s.capitalize()) #首字母大写 ABC DEFG ab

  • python中yield函数的用法详解

    首先,如果你还没有对yield有个初步分认识,那么你先把yield看做“return”,这个是直观的,它首先是个return,普通的return是什么意思,就是在程序中返回某个值,返回之后程序就不再往下运行了.看做return之后再把它看做一个是生成器(generator)的一部分(带yield的函数才是真正的迭代器),好了,如果你对这些不明白的话,那先把yield看做return,然后直接看下面的程序,你就会明白yield的全部意思了: def foo(): print("starting..

  • 关于Python 3中print函数的换行详解

    前言 因为工作的需要,最近看了看Python的应用,从入门级的九九乘法表开始,结果发现Python3.x和Python2.x真的是有太大的不同之处,就比如这里的换行处理,怕忘记先记下来,好了,话不多说了,来一起看看详细的介绍: Python2.X中的代码: #!/usr/bin/env python #-*- coding: utf-8 -*- __author__ = '****' class PrintTable(object): '''打印九九乘法表''' def __init__(sel

  • oracle中lpad函数的用法详解

    oracle中lpad的用法 pad翻译:填充 lpad函数,在字符串的左侧添加指定字符串,用法: www.jb51.net lpad(String ,截取长度,添加的字符串). 说是添加字符串也不准确,比较准确的说法是对String进行截取字符串, 如果截取长度大于String的长度,则在 String的左侧添加字符串进行填补,如果第三个参数未指定,则用空格进行填补. 例如: select lpad('test',10) from dual; 将返回" test" select lp

  • SQL中 patindex函数的用法详解

    返回pattern字符串在表达式expression里第一次出现的位置,起始值从1开始算. pattern字符串在expression表达式里没找就返回0,对所有有效的文本和字符串就是有效的数据类型. 描述一下此函数的具体用法: 1. PATINDEX ( '%pattern%' , expression ) '%pattern%'的用法类似于 like '%pattern%'的用法,也就是模糊查找其pattern字符串是否是expression找到,找到并返回其第一次出现的位置. 如: sel

随机推荐