大文字小文字を区別する正規表現について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
C PHP

大文字小文字を区別する正規表現について

#1

投稿記事 by C PHP » 8年前

1つ目は以下のっような文字列をすべて「; ja-JP」に置換したいと思っています。

; en-US
; en-GB
; pt-BR
; es-ES
; de-DE



2つ目は以下のっような文字列をすべて「; ja-jp」に置換したいと思っています。

; zh-sg
; zh-tw
; pt-br
; es-es
; de-de



このようにしても、エラーになってしまいました。
; [a_z][a_z]-[a_z][a_z]

いずれも、セミコロン、半角スペース、アルファベット2文字、ハイフン、アルファベット2文字、という文字列で、大文字か小文字かが違います。

エディタはサクラエディタをたまに使っています。

正規表現はほとんどわからないのですが、どのようにすればよいでしょうか?

よろしくおねがいします。

YuO
記事: 947
登録日時: 13年前
住所: 東京都世田谷区

Re: 大文字小文字を区別する正規表現について

#2

投稿記事 by YuO » 8年前

C PHP さんが書きました:このようにしても、エラーになってしまいました。
; [a_z][a_z]-[a_z][a_z]
エラーになる,というのは何の情報も提供していません。
  • 利用している正規表現エンジン (or 言語,アプリケーション,etc.)
  • 実際に出てきたエラーメッセージ
を書いてください。

とりあえず,範囲指定がしたいのであれば,_ではなく-だとは思いますが。

かずま

Re: 大文字小文字を区別する正規表現について

#3

投稿記事 by かずま » 8年前

C PHP さんが書きました:このようにしても、エラーになってしまいました。
; [a_z][a_z]-[a_z][a_z]
; [a-z][a-z]-[a-z][a-z] としてみたらどうなりますか?
下線ではなく、ハイフンです。

box
記事: 2002
登録日時: 13年前

Re: 大文字小文字を区別する正規表現について

#4

投稿記事 by box » 8年前

大文字にも対応する必要があるので、
[a-z][a-z]-[a-zA-Z]-[a-zA-Z]
なんていうのが登場する場面があるかもしれません。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: 大文字小文字を区別する正規表現について

#5

投稿記事 by みけCAT » 8年前

「以下のっような文字列」の定義がよくわからないですが、例えば

コード:

<?php

$str1 = <<<EOS
; en-US
; en-GB
; pt-BR
; es-ES
; de-DE
EOS;

$str2 = <<<EOS
; zh-sg
; zh-tw
; pt-br
; es-es
; de-de
EOS;

echo "----- str1 result -----\n";
echo preg_replace("/; [a-z]{2}-[A-Z]{2}/", "; ja-JP", $str1);
echo "\n----- str2 result -----\n";
echo preg_replace("/; [a-z]{2}-[a-z]{2}/", "; ja-jp", $str2);
もしくは、一度で置換するなら、例えば

コード:

<?php

$str = <<<EOS
; en-US
; en-GB
; pt-BR
; es-ES
; de-DE
; zh-sg
; zh-tw
; pt-br
; es-es
; de-de
EOS;

echo preg_replace_callback("/; [a-z]{2}-([A-Z]{2}|[a-z]{2})/",
    function($matches) {
        return "; ja-" . (ctype_upper($matches[1]) ? "JP" : "jp");
    }, $str);
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

C PHP

Re: 大文字小文字を区別する正規表現について

#6

投稿記事 by C PHP » 8年前

ありがとうございました。

解決することができました。

閉鎖

“C言語何でも質問掲示板” へ戻る