GVKun编程网logo

Python正则表达式拆分不带空字符串(python 正则提取字符串)

13

想了解Python正则表达式拆分不带空字符串的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于python正则提取字符串的相关问题,此外,我们还将为您介绍关于python正则表达式(1)--特

想了解Python正则表达式拆分不带空字符串的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于python 正则提取字符串的相关问题,此外,我们还将为您介绍关于python正则表达式(1)--特殊字符、Python正则表达式-为什么字符串结尾($和 Z)无法与组表达式一起使用?、Python正则表达式从IP字符串中删除端口号、Python正则表达式从字符串中提取MAC地址的新知识。

本文目录一览:

Python正则表达式拆分不带空字符串(python 正则提取字符串)

Python正则表达式拆分不带空字符串(python 正则提取字符串)

我有以下显示这种格式的文件名:

000014_L_20111007T084734-20111008T023142.txt
000014_U_20111007T084734-20111008T023142.txt
...

我想提取第二个下划线之后'_'和之前的中间两个时间戳部分'.txt'。因此,我使用了以下Python正则表达式字符串拆分:

time_info = re.split('^[0-9]+_[LU]_|-|\.txt$',f)

但这在返回的列表中给了我两个额外的空字符串:

time_info=['','20111007T084734','20111008T023142','']

如何仅获取两个时间戳信息?即我想要:

time_info=['20111007T084734','20111008T023142']

python正则表达式(1)--特殊字符

python正则表达式(1)--特殊字符

正则表达式—特殊表达式含义

正则表达式的字母和数字表示他们自身,但多数字母和数字前加一个反斜杠时会拥有不同的含义。 

下面列出了正则表达式模式语法中的特殊元素。

 

1.普通字符集

1)    \w              匹配字母数字及下划线

2)    \W              匹配非字母数字及下划线

3)    \s               匹配任意空白字符,等价于 [\t\n\r\f].

4)    \S               匹配任意非空白字符

5)    \d               匹配任意数字,等价于 [0-9]

6)    \D              匹配任意非数字

7)    \1...\9            匹配第n个分组的内容。

8)    [a-zA-Z0-9]    匹配任何字母及数字

 

2.数量字符集

用在字符或分组符(...)之后,默认贪婪匹配,如果想抑制贪婪匹配,需在数量字符后加?,例如:\w+?

1) .    匹配任意字符,除了换行符,当re.DOTALL标记被指定时,可以匹配包括换行符的任意字符

2)  *        匹配前一个字符0次1次或多次

3)  +        匹配前一个字符1次或多次

4)  ?        匹配前一个字符0次或1次

5)  {m}     匹配前一个字符m次

6)  {m,n}   匹配前一个字符m到n次

7)  {m,}     匹配前一个字符至少m次

8)  {,n}      匹配前一个字符0到n次,最多n次

 

3.边界匹配符

1)  ^       匹配字符串开头,如果是多行则匹配每一行的开头

2)  [^]       在[...]中,^表示否定,如非字母[^a-zA-Z],非数字[^0-9]

3)  $       匹配字符串或一行的结尾,如果是多行匹配模式,则每一行的结尾

4)  \A       仅匹配字符串的开始,同^

5)  \b        匹配一个单词的边界,也就是指单词和空格间的位置

6)  \B       等价于[^\b]表示匹配非单词边界

7)  \Z       匹配字符串结束,如果是存在换行,只匹配到换行前的结束字符串。

8)  \z        匹配字符串结束

 

4.逻辑匹配符

1)  |(或)

    匹配 | 左右任意一种正则表达式,如果左边表达式匹配上,匹配结束,不再匹配右边的正则表达式,该符号一般放在()中使用,如果没在圆括号中则它的范围是整个正则表达式

2)  分组 (...)

    后向引用,用()括起来的正则表达式将被作为一个分组,从正则表达式的左边依次算起,有多少个左括号''('',就有 多少个分组,分组的编码从1依次加1,无论是括号中嵌套括号,并且分组表达式作为一个整体,后可接数量词。

3)  \<number>

    引用分组匹配到的分组编号为<number>的字符串 如:\1...\9

4)  (?P<name>...)

    命名分组,除了默认的分组编号外再指定一个别名分组

    注意:P是大写

5)  (?P=name)

    引用别名为name的分组匹配,这个是在正则表达式中引用,表示匹配重复的字符串,也可以使用编号引用。

    注意:P是大写

 

5.特殊匹配符

1)  (?imx)     正则表达式包含三种可选标志:i, m, 或 x 。只影响括号中的区域。

2)  (?-imx)      正则表达式关闭 i, m, 或 x 可选标志。只影响括号中的区域。

3)  (?:...)        匹配到的括号内字符串不作为分组

4)  (?!pattern)       前向否定断言语法,表示否定开头

          只能用在正则表达式的开头,pattern是匹配模式,它后面的内容需要不匹配 该正则表达式才匹配成功

5)  (?<!pattern)   后向否定断言语法,表示否定结尾

           前面的内容需要不匹配该pattern模式才匹配成功

6)  (?=pattern)   前向肯定断言语法.

          需要匹配pattren模式才能匹配成功,表示肯定前面的字符内容

7)  (?<=pattern)    后向肯定断言语法

         需要匹配pattern模式才能匹配成功,表示肯定后面的字符内容

8)     (?#...)           #后面的内容将被作为注释而忽略

 

Python正则表达式-为什么字符串结尾($和 Z)无法与组表达式一起使用?

Python正则表达式-为什么字符串结尾($和 Z)无法与组表达式一起使用?

在Python 2.6中。似乎字符串末尾的那个标记$\Z不符合组表达式兼容。佛的例子

import rere.findall("\w+[\s$]", "green pears")

退货

[''green '']

(因此$实际上无效)。并使用

re.findall("\w+[\s\Z]", "green pears")

导致错误:

/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/re.pyc in findall(pattern, string, flags)    175     176     Empty matches are included in the result."""--> 177     return _compile(pattern, flags).findall(string)    178     179 if sys.hexversion >= 0x02020000:/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/re.pyc in _compile(*key)    243         p = sre_compile.compile(pattern, flags)    244     except error, v:--> 245         raise error, v # invalid expression    246     if len(_cache) >= _MAXCACHE:    247         _cache.clear()error: internal: unsupported set operator

为什么这样工作以及如何解决?

答案1

小编典典

[..]表达式是一个 字符组
,这意味着它会匹配任何一个字符包含在其中。因此,您正在匹配文字$字符。字符组始终适用于一个输入字符,因此永远不能包含锚点。

如果要匹配空格字符 字符串的结尾,请改用非捕获组,将其与|或选择器结合使用:

r"\w+(?:\s|$)"

或者,查看\b单词边界锚点。它会匹配\w组开始或结束的任何位置(因此,它会锚定到文本中\w字符之前或之后的\W字符,或者字符串的开始或结尾的点)。

Python正则表达式从IP字符串中删除端口号

Python正则表达式从IP字符串中删除端口号

您需要的是第二场比赛:

import re

with open('IPs.txt','r') as infile:
    for ip in infile:
        re_for_IP = re.match(r'(\d{1,3}\.\d{1,3})',ip)
        if re_for_IP:
            print(re_for_IP[0])

输出:

77.55.211.77
79.127.57.42

单线:

import re

ips = []

with open('IPs.txt','r') as infile:
    ips = [ip[0] for ip in [re.match(r'(\d{1,ip) for ip in infile] if ip]

print(ips)
,

您不需要正则表达式,请在读取行时使用:字符上的split函数。然后,您将得到一个具有两个位置的数组,第一个仅包含IP地址,另一个包含端口。

,

尝试一下:

import re
regex = '''^(25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)\.( 
            25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)\.( 
            25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)\.( 
            25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)$'''

with open('IP.txt','r') as infile: 
    for ip in infile:
        ip = ip.strip('\n')
        IP_without_port_number = re.sub(r':.*$',"",ip)
        re_for_IP = re.match(r'^\d{1,3}$',ip)
        if(re.search(regex,IP_without_port_number)):  
            print(IP_without_port_number)

输出:

77.55.211.77
79.127.57.42
,

我想出了这个正则表达式代码,它对我有用,而且很容易。

import re
text = input("Input text: ")
pattern = re.findall(r'\d+\.\d+\.\d+\.\d+',text)
print(pattern)

Python正则表达式从字符串中提取MAC地址

Python正则表达式从字符串中提取MAC地址

我需要使用pythonre引擎编写正则表达式的帮助,以:

  1. 从文本文件中提取所有MAC地址
  2. 提取具有以下格式的所有字符串: foo bar ... MAC:ADDRESS ... baz bat \r\n

提前致谢!

我尝试了以下操作来提取MAC地址,但是很幸运:

import rep = re.compile(ur''((?:(\d{1,2}|[a-fA-F]{1,2}){2})(?::|-*)){6}'')test_str = u"TEXT WITH SOME MAC ADDRESSES 00:24:17:b1:cc:cc TEXT CONTINUES WITH SOME MORE TEXT 20:89:86:9a:86:24"found = re.findall(p, test_str)for a in found:    print a

答案1

小编典典

我炮制了以下内容:([0-9a-fA-F]:?){12}匹配文本中的MAC地址。

这是应该如何工作的:

  • [0-9a-fA-F] 匹配用于表示十六进制数字的字符
  • :? 匹配可选的冒号
  • (...){12}-然后将所有这些分组并重复12次。12,因为MAC地址由6对十六进制数字组成,用冒号分隔

您可以在这里看到它的实际效果。

然后,Python代码变为:

import rep = re.compile(r''(?:[0-9a-fA-F]:?){12}'')test_str = u"TEXT WITH SOME MAC ADDRESSES 00:24:17:b1:cc:cc TEXT CONTINUES WITH SOME MORE TEXT 20:89:86:9a:86:24"re.findall(p, test_str)

结果产生:

[u''00:24:17:b1:cc:cc'', u''20:89:86:9a:86:24'']

今天的关于Python正则表达式拆分不带空字符串python 正则提取字符串的分享已经结束,谢谢您的关注,如果想了解更多关于python正则表达式(1)--特殊字符、Python正则表达式-为什么字符串结尾($和 Z)无法与组表达式一起使用?、Python正则表达式从IP字符串中删除端口号、Python正则表达式从字符串中提取MAC地址的相关知识,请在本站进行查询。

本文标签: