ページ 1 / 1
大文字小文字を区別する正規表現について
Posted: 2015年10月16日(金) 10:51
by C PHP
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文字、という文字列で、大文字か小文字かが違います。
エディタはサクラエディタをたまに使っています。
正規表現はほとんどわからないのですが、どのようにすればよいでしょうか?
よろしくおねがいします。
Re: 大文字小文字を区別する正規表現について
Posted: 2015年10月16日(金) 17:29
by YuO
C PHP さんが書きました:このようにしても、エラーになってしまいました。
; [a_z][a_z]-[a_z][a_z]
エラーになる,というのは何の情報も提供していません。
- 利用している正規表現エンジン (or 言語,アプリケーション,etc.)
- 実際に出てきたエラーメッセージ
を書いてください。
とりあえず,範囲指定がしたいのであれば,_ではなく-だとは思いますが。
Re: 大文字小文字を区別する正規表現について
Posted: 2015年10月17日(土) 01:59
by かずま
C PHP さんが書きました:このようにしても、エラーになってしまいました。
; [a_z][a_z]-[a_z][a_z]
; [a-z][a-z]-[a-z][a-z] としてみたらどうなりますか?
下線ではなく、ハイフンです。
Re: 大文字小文字を区別する正規表現について
Posted: 2015年10月17日(土) 08:50
by box
大文字にも対応する必要があるので、
[a-z][a-z]-[a-zA-Z]-[a-zA-Z]
なんていうのが登場する場面があるかもしれません。
Re: 大文字小文字を区別する正規表現について
Posted: 2015年10月17日(土) 08:53
by みけCAT
「以下のっような文字列」の定義がよくわからないですが、例えば
コード:
<?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);
Re: 大文字小文字を区別する正規表現について
Posted: 2015年10月20日(火) 07:58
by C PHP
ありがとうございました。
解決することができました。