学习笔记23-Python正则表达式

正则表达式

正则表达式(Regular Expression)是一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。
具体可参考菜鸟教程
不同的编程语言都存在正则表达式,只不过有一些语法规则不是互相支持的。

Python的正则表达式可以使用“re”包,其中封装了Python支持的所有正则表达式。
可以把re理解成一个正则表达式引擎,它负责对我们写的正则表达式文本进行编译,编译得到的是一个正则表达式对象(“object”),然后将这个对象与给定的字符串文本进行匹配,得到匹配结果。

下面给出一个例子:
题目描述:
小易喜欢的单词具有以下特性:
1.单词每个字母都是大写字母
2.单词没有连续相等的字母
3.单词没有形如“xyxy”(这里的x,y指的都是字母,并且可以相同)这样的子序列,子序列可能不连续。
例如:
小易不喜欢”ABBA”,因为这里有两个连续的’B’
小易不喜欢”THETXH”,因为这里包含子序列”THTH”
小易不喜欢”ABACADA”,因为这里包含子序列”AAAA”
小易喜欢”A”,”ABA”和”ABCBA”这些单词
给你一个单词,你要回答小易是否会喜欢这个单词。

#coding=utf-8
import re
s=raw_input()
pattern1=re.compile('[A-Z]{%d}'%len(s))#每个字符都是大写字母
pattern2=re.compile('.*(.)(\\1).*')#没有相邻的相同字母
pattern3=re.compile('.*(.).*(.)(.*\\1)(.*\\2).*')#没有相同的子序列
#(\\1)表示编号为1的group,(\\2)表示编号为2的group
if re.match(pattern1,s)\
and not(re.match(pattern2,s))\
and not(re.match(pattern3,s)):
    print 'Likes'
else:
    print 'Dislikes'

上面的每个pattern就是一个正则表达式的对象,它们分别与输入字符串s匹配。
具体Python的正则表达式可参考AstralWind的博客

你可能感兴趣的:(python,正则表达式,python)