ホームページ  >  記事  >  バックエンド開発  >  PHP および Python_PHP チュートリアルに関連する通常の関数の例

PHP および Python_PHP チュートリアルに関連する通常の関数の例

WBOY
WBOYオリジナル
2016-07-13 10:37:43703ブラウズ

文字列処理を行うときに、文字列処理関数で目的を達成できない場合は、正規表現を使用して目的を達成します。

正規表現が使用される一般的な状況には、マッチング、検索、セグメント化、検索、置換が含まれます。以下では、これらの状況をそれぞれ PHP と Python で実装し、比較します。 通常の PHP は PCRE スタイルを採用しています。
#1 数学の一致 (そして結果を取得) (ここでは一致結果を取得する必要があることに注意してください。これは結果を取得しないこととは異なります) #coding:utf-8 import re strs = '私はあなたを愛しています、知っていますか?ナハフェハ' patt = re.compile(r'^.*?(w+).*?$',re.I)print patt.match(strs).group(1) #Output P

PHP:

#出力: 文字列 'P' (length=1)



注意: preg_match() は Python の match と同じで、最初の一致の後で検索を停止します。 Preg_match_all() はこれとは異なり、件名を最後まで検索します。 実際、PHP の正規表現は次のようにすることもできます:

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

#2 検索検索パイソン:

patt = re.compile(r'(w+)',re.I) print patt.search(strs).group(1) #Output P

検索方法は同じです。見つかった場合はすぐに返されます。PHP では、preg_match(_all) を使用してこれを実現できます。 PHP: 同上#3 マッチングスプリットパイソン:

patt = re.compile(r'w+',re.I) for i in patt.split(strs): #ここでは Unicode オブジェクト出力が使用されることに注意してください print unicode(i,'utf-8') #上記の出力「私はあなたを愛しています、知っていますか?」ははは」

PHP でこれを実現するには preg_split() を使用できますPHP:

/**出力:


リーリー **/

#4 検索してすべての結果を見つけます (ALL) パイソン:

print patt.findall(strs) #出力 ['P', 'y', 't', 'h', 'o', 'n', 'fe']

PHP でこれを実現するには preg_match_all() を使用できます PHP:


/**

リーリー

リーリー #5 検索と置換 実際、Python の finditer() メソッドは検索と置換ではなく、各一致結果 (Match オブジェクト) に順次アクセスする反復子を返すだけです Python:

for i in patt.finditer(strs): print i.group() #上記の出力 '''P y th 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当我们在做字符串处理时,如果字符串处理函数不能实现我们想要的时,我们就借助正则来帮助我们实现了。 一般使用正则的情况有:匹配...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。