Python上での正規表現の書き方

このQ&Aのポイント
  • Python上での正規表現の書き方について教えてください。
  • PHPで作ったプログラムをGAE/Pythonで作り替えていますが、正規表現の書き方が分からず困っています。
  • 具体的な問題として、PHPの置換処理をPythonの正規表現でどのように書けばいいか教えてください。
回答を見る
  • ベストアンサー

Python上での正規表現でどのように書けば?

PHPで作ったプログラムをGAE(Google App Engine)/Python で作り替えています。 PHPの置換処理で、たとえば、以下の正規表現をPythonで書きたいのですが、どのようにすればいいでしょうか? mb_ereg_replace("無([いかきくけこ])","な\\1",$str); この質問は、別の言い方をすると次のようにもなります。 「Pythonで以下をひとつの正規表現で表現したい」 str = re.sub('無い','ない',str) str = re.sub('無か','なか',str) str = re.sub('無き','なき',str) str = re.sub('無く','なく',str) str = re.sub('無け','なけ',str) str = re.sub('無こ','なこ',str) どなたか、お分かりになる方、教えて頂ければと思います。

noname#149935
noname#149935

質問者が選んだベストアンサー

  • ベストアンサー
  • aton
  • ベストアンサー率47% (160/334)
回答No.1

漢字/日本語ではないけど,こんな感じ? import re pt = re.compile('X([abc])') st = 'Xa1 Xb2 Xc3' st = pt.sub(r'x\1', st) print(st) ↓実行結果 xa1 xb2 xc3

noname#149935
質問者

お礼

おお、ありがとう! できました。 上記は試していたのですが、問題は日本語処理のところでうまくいっていなかったようです。ありがとうございます。

関連するQ&A

  • php 正規表現で、\マークを取り除くには?

    php で ereg_replace関数を使って¥マークを取り除きたいのですが、 ereg_replace("\\", "",$str); と記述すると Warning: ereg_replace() [function.ereg-replace]: REG_EESCAPE in C:\xampp... とエラーになってしまいます。 どうすれば正規表現により円マークを取り除くことができるのでしょうか?

    • ベストアンサー
    • PHP
  • 正規表現を表示させたい

    今正規表現をしているのですが、どうやってブラウザーで表示できるのでしょうか?わかっている人にとってはめちゃくちゃくだらないことだと思うのですが、よろしくお願いします。下記のコードです。 <?php $str = "There is no pen . I want a pencil . "; ereg_replace("pen(cil)?", "pencil", $str ); ?>

    • ベストアンサー
    • PHP
  • PHPの正規表現について

    // URLエンコード $str =~ s/([^\w ])/'%' . unpack('H2', $1)/eg; $str =~ tr/ /+/; これをPHPの関数を使った方法と使わなかった方法が知りたいです。 また、正規表現で、ereg.., preg.., mb_eregがありますが、この違いの詳細が知りたいです。

    • ベストアンサー
    • PHP
  • 正規表現

    正規表現に疎いので質問させてください。 $param = ereg_replace('/?$', '', $_SERVER['REQUEST_URI']); これをpreg_matchで書くとどうなりますか? よろしくお願い致します。

    • 締切済み
    • PHP
  • 正規表現で <span>~</span>で囲まれた文字を別の文字に置換したい

    こんにちは。正規表現についてお教えいただけないでしょうか? HTMLページを解析し、<span>と</span>で囲まれた範囲を、別の文字列に置換したいのです。 そこで以下のようにしてみました。 print mb_ereg_replace("<span>.+?</span>","置換文字",$source); しかし<span>ああ </span>と、スペースがないと反応しないようなのです。 正規表現の間違いでしょうか? お教えいただけると助かります。よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 【PHP】preg_replace() で正規表現が正常に動かない?

    PHP5利用者です。 preg_replace() が思い通りに動かないため困っています。 マルチバイト文字及び正規表現を使おうとした場合動作がおかしいのです。例えば、 「 . 」は任意の1文字とされていますが、 $str = preg_replace("/第.回/", "第3回", "今日は第*回目です。"); 等と書いても何も置換されません。 これは一体どういうことなのでしょうか? 文字コードはUTF-8です。 お詳しい方、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • preg_replaceでの正規表現について

    お世話になります。 ereg_replace で書いた正規表現による置換処理を、 preg_replace に置き換えようとしています。 (preg_replaceの方が処理が速いとマニュアルにあったので) ところが、preg_replaceでの正規表現検索がうまくいかないで困っています。 基本的には、ereg_replaceの正規表現部分を//で囲んでいるだけです。 具体的には、下記のような処理を書いています。 間違いがあれば、ご指摘いただけましたら幸いです。 //### うまくいっている ereg_replace のパターン ここから ### $html=file_get_contents('template/temple.html'); //ひな形読み込み $search='\{dokuji tag\}.+\{_dokuji tag\}'; $replace=''; $html=ereg_replace($search,$replace,$html); //不要部分の削除 //### うまくいっている ereg_replace のパターン ここまで ### ↓ //### うまくいかない preg_replace のパターン ここから ### $html=file_get_contents('template/temple.html'); //ひな形読み込み $search='/\{dokuji tag\}.+\{_dokuji tag\}/m'; $replace=''; $html=preg_replace($search,$replace,$html); //不要部分の削除 //### うまくいかない preg_replace のパターン ここまで ### //### 置き換えるソース('template/temple.html') ここから ### <!-- {dokuji tag} --> <tr> <td nowrap><strong>タイトル:</strong></td> <td> <input type="text" name="name" size="80" value="{name}" /> </td> </tr> <!-- {_dokuji tag} --> //### 置き換えるソース('template/temple.html') ここまで ### よろしくお願い申し上げます。

    • ベストアンサー
    • PHP
  • 正規表現について

    変数の文字列を範囲指定して削除しようとしています。 正規表現を使って範囲指定したいのですが、うまくいきません。 <span class="shimei"> ~ </span> というのは正規表現でどのように書くのでしょうか? $name = mb_ereg_replace("<span class=\"shimei\">.*</span>","",$name); これはどこが間違っているのでしょうか?

    • ベストアンサー
    • PHP
  • 正規表現での置換えについて

    正規表現を使った置換えでどうやったらいいのか悩んでいます。 やり方は、カンマで区切られた数字や英字の列をその先頭だけ残して別の記号(?など)に変換するというものです。 変換例 222,1,33333 は 2??,1,3???? へ置換え 55,22aa は 5?,2??? へ置換え 6 は 6 へ置換え(つまりそのまま) このような置換えをすることは可能でしょうか。 こういう置換えはand条件が使えないと無理なのかなとも思ったりしています。 ただ正規表現にはand条件は無いようですし。(or条件はあるようですが) mb_ereg_replaceを使って明示していただけると助かります。 もちろん複数行になっても問題ありませんし、mb_ereg_replaceでは無理という場合に別の関数を使っていただいても結構です。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 正規表現について

    すみませんが、教えてください。 PHP+MYSQLで掲示板のようなサイトを作っています。 投稿したコメントの中にURLがある場合、次の変換で、リンクを設定するようにしています。 $str = ereg_replace("(https?|ftp|news)(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)", "<a href=\"\\1\\2\" target=\"_blank\">\\1\\2</a>", $aStr); さらに、次のことがしたいのですが、どうすれば良いのか教えてください。 (1)URLが長い場合、表示する文字列を指定文字数でカットする。 (2)URLのみをリンク設定付で切り出す。 当方、正規表現がほとんど理解できていません。 (オイラリーの本を買ったのですが、時間がなくて学習できていません。) 申し訳ございませんが、こうすれば良いというコードを教えていただければ、幸いです。

    • ベストアンサー
    • PHP

専門家に質問してみよう