Home >Backend Development >PHP Tutorial >Some examples of regular functions related to PHP and Python_PHP tutorial
When we are doing string processing, if the string processing function cannot achieve what we want, we use regular expressions to help us achieve it.
The general situations in which regular expressions are used include: matching, search, segmentation, search and replace. Below we will implement these situations in PHP and Python respectively, and make a comparison. PHP regular adopts: PCRE style.
#Output: string 'P' (length=1)
preg_match('/(w+)/',$strs,$m);
#2 SearchSearch Python:patt = re.compile(r'(w+)',re.I) print patt.search(strs).group(1) #Output P
The search method is the same. If it is found, it will be returned immediately. Otherwise, it will be searched until the end of the string. In PHP, you can use preg_match(_all) to achieve this. PHP: Same as above #3 Match segmentation Python:patt = re.compile(r'w+',re.I) for i in patt.split(strs): #Note that unicode object output is used here print unicode(i,'utf-8') #The above output '''I love you, do you know? Hahaha'''
You can use preg_split() in PHP to achieve this PHP:
/**Output:
<i><b>array</b> 0 => string '我爱' <i>(length=6)</i> 1 => string '你' <i>(length=3)</i> 2 => string '你' <i>(length=3)</i> 3 => string '知' <i>(length=3)</i> 4 => string '吗' <i>(length=3)</i> 5 => string '?' <i>(length=3)</i> 6 => string '哈哈' <i>(length=6)</i> 7 => string '哈' <i>(length=3)</i></i>**/
print patt.findall(strs) #Output ['P', 'y', 't', 'h', 'o', 'n', 'fe']
Preg_match_all() can be used in PHP to achieve PHP:
/**
<i><i><b>array</b> 0 => <b>array</b> 0 => string 'P' <i>(length=1)</i> 1 => string 'y' <i>(length=1)</i> 2 => string 't' <i>(length=1)</i> 3 => string 'h' <i>(length=1)</i> 4 => string 'o' <i>(length=1)</i> 5 => string 'n' <i>(length=1)</i> 6 => string 'fe' <i>(length=2)</i> 1 => <b>array</b> 0 => string 'P' <i>(length=1)</i> 1 => string 'y' <i>(length=1)</i> 2 => string 't' <i>(length=1)</i> 3 => string 'h' <i>(length=1)</i> 4 => string 'o' <i>(length=1)</i> 5 => string 'n' <i>(length=1)</i> 6 => string 'fe' <i>(length=2) **/ </i></i></i>
#5 Find and Replace Actually the finditer() method in python is not a search and replace, it just returns an iterator that sequentially accesses each matching result (Match object) python:
for i in patt.finditer(strs): print i.group() #The above output ''' P y t h on fe '''
这和PHP中的preg_filter()有所不同,preg_filter()与preg_replace()都是执行一个正则表达式的搜索和替换。在python中正则方法中,用于查找替换的是:sub()与subn()。 需要注意的是sub()返回的一个新字符串,不是作用在原对象上。 subn()返回的是一个以“新字符串和替换的次数”组成的元组,也没有作用到原对象上。 #替换三次 print patt.sub('99',strs,3) #输出 '我爱99你99你99知h吗o?n哈哈fe哈' print patt.subn('99',strs) #输出:是一个元组('我爱99你99你99知99吗99?99哈哈99哈',7) 替换与引用#这里批量替换文章中的图片的路径(old_c 是文章的内容)
img_dir = 'test'
img_patt = re.compile('src=".*?/(\w+\.\w+)"')
new_c = img_patt.sub(r'src="./%s/\1"'%img_dir,old_c) PHP:
#这里批量替换文章中的图片的路径(old_c 是文章的内容)
img_dir = 'test' img_patt = re.compile('src=".*?/(\w+\.\w+)"') new_c =img_patt.sub(r'src="./%s/\1"'%img_dir,old_c) #输出:
<i><i><i><font><b><b><font>string '我爱999你999你999知999吗999?999哈哈999哈' <i>(length=51) </i></font></b></b></font></i></i></i>另注 1 对于正则的基础知识可以GOOGLE一下,Python正则的基础知识也可以GOOGLE一下。 2 对于更多关于PHP PCRE风格的正则基础,可以参看:http://cn2.php.net/manual/zh/regexp.introduction.php 3 另外有一点需要注意的是:对于处理字符串能用字符串函数处理的就用函数处理,千万别用正则。