欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

正则表达式

程序员文章站 2022-04-22 19:02:01
...
正则表达式使用:

常用规则:

一、常用特殊字符:
$ 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 ‘\n' 或 ‘\r'。要匹配 $ 字符本身,请使用 \$。
( ) 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 \( 和 \)。
* 匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 \*。
+ 匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 \+。
.  匹配除换行符 \n之外的任何单字符。要匹配 .,请使用 \。
[ ]  标记一个中括号表达式的开始。要匹配 [,请使用 \[。
?  匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用 \?。
\   将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。例如, ‘n' 匹配字符 ‘n'。'\n' 匹配换行符。序列 ‘\\' 匹配 “\”,而 ‘\(' 则匹配 “(”。
^  匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。要匹配 ^ 字符本身,请使用 \^。
{ }   标记限定符表达式的开始。要匹配 {,请使用 \{。
|   指明两项之间的一个选择。要匹配 |,请使用 \|。
二、常用限定符:
*  +  ? {m }{m,n} 
三、默认最长匹配 ,最短匹配需要添加?

python使用:

#!/usr/bin/python
# _*_ coding:  UTF-8 _*_
from pip._vendor.requests import structures
from time import strftime
import datetime,time
import re
def format():
    str='version'
    num=1.0
    format="字符串为:%s"%str
    
    print(format)
    print("字符串为%s  版本为:%d"%(str,num))
    word="\thello world \n "
    print("  直接输出:",word)
    print("rstrip() 后输出:",word.rstrip()) 
    print(" strip() 后输出:",word.strip()) 
    print(" strip() 后输出:",word.lstrip()) 
#= !=字符串比较  endswith  startswith split   join ,find ,rfind ,replace 
def join():
    str="hello , 你好,china"
    str2=" word "
    str2="hello"
    print(str+" "+str2 )
    
    strs=["hello "," word " ," china"]
    print("".join(strs))
    
    print(str[4])
    print(str[1:3])
    
    print(str.split( ","))
    print("分割后的字符串类型:", type(str.split( ",") ))
    
    print(str.startswith("hello"))
    str.endswith( )
def reverse():
    str="my name is wangzt"
    out=""
    li=list(str)
    print(li)
    
    li.reverse()
    out="".join(li)
    
#     for i in range(len(li) , 0 , -1 ):
#         out += "".join( li[i-1])
#         out+=li[i-1]
        
    print(out)
#strftime时间到字符串         strptime字符串到时间
def timeAndStr():
    #时间到字符串的转换
    print(time.strftime("%Y-%m-%d" , time.localtime()))
    
    k=(1,2,3)
    print( type( k ))
    
    #字符串转换为时间
    t=time.strptime("2018-9-9", "%Y-%m-%d")
    t2=time.mktime( t)#时间的元组转换为时间戳
    print( t2 )
    print(time.ctime( t2 )  )#毫秒时间戳转换为时间类型
    
    print(time.localtime()[:6]  )
#正则表达式查找比较费时 ,如果多次查找用compie编译返回pattern对象然后在匹配
def testZZ():
    s="HELLO WORD"
    s2="你好 WORLD2"
    print(re.findall(r"^hello", s ))   
    print(re.findall(r"^hello", s,re.I ))   #hello开头的单词
    print(re.findall("word$", s,re.I ))   #word结束的单词
    print(re.findall(r"\b\w+\b", s,re.I ))   #匹配所有单词
    
    #替换功能
    print(re.sub("HELLO", "hi",s ))    
    print(re.sub("HELLO", "hi", s[-4:] ))    
    
    #subn使用
    print("匹配字母数字:"+ re.sub(r"\w", "hi", s2 ))
    print("subn 匹配字母数字:"+ str(re.subn(r"\w", "hi", s2 )   ) )#返回 带有匹配次数 元组 
    
    #
    p=re.compile(r"(abc)\1")
    m=p.match("abcabcabc")
    print(m.group(0))
    print(m.group())
    print(m.groupdict().keys( ))
    print(m.groupdict().values( ))
    print(m.re.pattern )
    
if __name__ == '__main__':
#     format()
#     join()
#     reverse()
#     timeAndStr()
    testZZ()