Home >Backend Development >PHP Tutorial >Some examples of regular functions related to PHP and Python_PHP tutorial

Some examples of regular functions related to PHP and Python_PHP tutorial

WBOY
WBOYOriginal
2016-07-13 10:37:43768browse

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.
#1 Match Math (and get the result)(Note that here you need to get the matching result, which is different from not getting the result) #coding:utf-8 import re strs = 'I love you, do you know? nhahafeha' patt = re.compile(r'^.*?(w+).*?$',re.I)print patt.match(strs).group(1) #Output P

PHP:

#Output: string 'P' (length=1)



Note: preg_match() is the same as match in python. It will stop searching after the first match. Preg_match_all() is different from this, it will search the subject until it reaches the end. Actually, regular expressions in PHP can also look like this:

preg_match('/(w+)/',$strs,$m);

#2 SearchSearchPython:

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 segmentationPython:

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 &#39;我爱&#39; <i>(length=6)</i>
  1 => string &#39;你&#39; <i>(length=3)</i>
  2 => string &#39;你&#39; <i>(length=3)</i>
  3 => string &#39;知&#39; <i>(length=3)</i>
  4 => string &#39;吗&#39; <i>(length=3)</i>
  5 => string &#39;?&#39; <i>(length=3)</i>
  6 => string &#39;哈哈&#39; <i>(length=6)</i>
  7 => string &#39;哈&#39; <i>(length=3)</i></i>
**/

#4 Search to find all results (ALL) Python:

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 &#39;P&#39; <i>(length=1)</i>
      1 => string &#39;y&#39; <i>(length=1)</i>
      2 => string &#39;t&#39; <i>(length=1)</i>
      3 => string &#39;h&#39; <i>(length=1)</i>
      4 => string &#39;o&#39; <i>(length=1)</i>
      5 => string &#39;n&#39; <i>(length=1)</i>
      6 => string &#39;fe&#39; <i>(length=2)</i>
  1 => 
    <b>array</b>
      0 => string &#39;P&#39; <i>(length=1)</i>
      1 => string &#39;y&#39; <i>(length=1)</i>
      2 => string &#39;t&#39; <i>(length=1)</i>
      3 => string &#39;h&#39; <i>(length=1)</i>
      4 => string &#39;o&#39; <i>(length=1)</i>
      5 => string &#39;n&#39; <i>(length=1)</i>
      6 => string &#39;fe&#39; <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 &#39;我爱999你999你999知999吗999?999哈哈999哈&#39; <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 另外有一点需要注意的是:对于处理字符串能用字符串函数处理的就用函数处理,千万别用正则。   PHP、Python 相关正则函数实例 - fc_lamp - @fc_lamp

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/735170.htmlTechArticle当我们在做字符串处理时,如果字符串处理函数不能实现我们想要的时,我们就借助正则来帮助我们实现了。 一般使用正则的情况有:匹配...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn