WEB开发网
开发学院软件开发Python Python字符串及正则表达式 阅读

Python字符串及正则表达式

 2012-12-20 15:25:04 来源:WEB开发网   
核心提示: 正则表达式元字符与语法图: 注意事项:正则表达式的嵌套需要使用“()”,例如(\d\d\d){2}代表的是六个数字\d\d\d{2}代表的是4个数字,正则表达式每个分组会自动拥有一个组号,Python字符串及正则表达式,从左向右分别表示为\1,\2…例如(abc)\1代表匹配ab

 正则表达式元字符与语法图:

untitled
 
注意事项:
正则表达式的嵌套需要使用“()”,例如(\d\d\d){2}代表的是六个数字\d\d\d{2}代表的是4个数字。
正则表达式每个分组会自动拥有一个组号,从左向右分别表示为\1,\2…例如(abc)\1代表匹配abc两次。
三种间隔符号——“^”(代表匹配字符串首部子串),“$”(代表匹配结束部分的子串),“\b”(分隔单词)
findall() sub() subn()创建副本,不改变原字符串
 
sys.re模块使用:
findall(pattern,string,flags = 0);  搜索string,以列表形式返回全部能匹配的子串,例子:
s = "HELLO WORLD" 
print re.findall(r"^hello",s) 
print re.findall(r"^hello",s,re.I) 
print re.findall("WORLD$",s) 
print re.findall(r"wORLD$",s,re.I) 
print re.findall(r"\b\w+\b",s)
 
sub(pattern,repl,string,count = 0);使用repl替换string中每一个匹配的子串后返回替换后的字符串。 当repl是一个字符串时,可以使用\id或\g<id>、\g<name>引用分组,但不能使用编号0。 当repl是一个方法时,这个方法应当只接受一个参数(Match对象),并返回一个字符串用于替换(返回的字符串中不能再引用分组)。 count用于指定最多替换次数,不指定时全部替换。subn(pattern,repl,string,count = 0);  返回 (sub(repl, string[, count]), 替换次数)。例子:
s = "hello world" 
print re.sub("hello","hi",s)  #不改变原字符串 
print re.sub("hello","hi",s[-4:]) 
print re.sub("world","China",s[-5:])
s = '你好 WORLD2' 
print "匹配字母数字:" + re.sub(r"\w",'hi',s) 
print "替换次数:" + str(re.subn(r"\w",'hi',s)[1]) 
print "匹配非字母数字:" + re.sub(r"\W",'hi',s) #这里一个汉字是两个字符 
print "替换次数:" + str(re.subn(r"\W",'hi',s)[1]) 
print "匹配空白字符:" + re.sub(r"\s",'hi',s) 
print "匹配数字字符:" + re.sub(r"\d",'hi',s) 
print "匹配任意字符:" + re.sub(r".",'hi',s)
 
re模块规则选项:
  • re.I(re.IGNORECASE): 忽略大小写(括号内是完整写法,下同)
  • M(MULTILINE): 多行模式,改变'^'和'$'的行为(参见上图)
  • S(DOTALL): 点任意匹配模式,改变'.'的行为
  • L(LOCALE): 使预定字符类 \w \W \b \B \s \S 取决于当前区域设定
  • U(UNICODE): 使预定字符类 \w \W \b \B \s \S \d \D 取决于unicode定义的字符属性
  • X(VERBOSE): 详细模式。这个模式下正则表达式可以是多行,忽略空白字符,并可以加入注释。

Tags:Python 字符串 正则

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接