アプリ版:「スタンプのみでお礼する」機能のリリースについて

test.txtのファイルの中に以下のコメントがはいっています。

--- test.txt(置換前)
各URLは以下の通りです。
(1)hoge.com
(2)hoge123.com
(3)hoge222.com
---

ファイルの中のhoge.comはそのままで、以下のようにその他の文字は他の文字に置換を行いたいと思ってます。

--- test.txt(置換後)
各URLは以下の通りです。
(1)hoge.com
(2)abc.com
(3)abc.com
---

指定した文字(hoge.com)を置換する方法は簡単に行えるのですが、指定した文字以外の文字を置換する場合、どのように書けばいいでしょうか?


どなたかよろしくお願いします。

A 回答 (4件)

具体的にどう置換したいのかよくわからんのだけど, 素直に「マッチしなかったら置換」って書けばいいんじゃないの? 単純には


unless (/^hoge\.com$/) {
なんか
}
みたいな感じ.

この回答への補足

私の書き方が分かりにくくすいません。

ちょっと書き方を変えて、簡単に説明させていただくと、特定のURL以外は他の文字に変更したいと思っております。

変更前
$hoge="各URLは以下の通りです。<br>(1)hoge.com(2)hoge123.com(3)hoge222.com";

$hogeの中のhoge.comはそのままで、それ以外のhoge123.comとhoge222.comを例えばabc.comに変更したいのです。

変更後
$hoge="各URLは以下の通りです。<br>(1)hoge.com(2)abc.com(3)abc.com";

まだ分かりにくいかもしれませんが、よろしくお願いします。

補足日時:2013/04/18 00:03
    • good
    • 0

そもそも「URL かどうか」をどう判定するかって問題が残る (「URL」という文字列は URL か?) のだが, そこをクリアでき

れば「split→置換」とか「否定先読み」とかの方法がとれそう.

この回答への補足

確かに今回はドメインのみの明記の為、URLかどうかの判断は別として、今回は判別出来た場合において、否定先読みの書き方とか簡単にでいいので教えていただけないでしょうか?
ググッてみたのですが、初めて聞いた事なので、どうも理解しにくくうまく書けませんでした。
よろしくお願いします。

補足日時:2013/04/18 02:05
    • good
    • 0

 Tacosanが言われるように、まずURL部分の判別が必要です。

そうしないと改行コードや"各URLは以下の通りです。"の部分まで該当してしまいます。
 ⇒( http://jbpe.tripod.com/rfcj/rfc2396.ej.sjis.txt )
URL(URI)の規格が掲載されています。具体的には
 ⇒URI(URL) の正規表現( http://www.din.or.jp/~ohzaki/perl.htm#URI )
その上で、指定されたもの以外を置換します。
    • good
    • 0

そうか, シンプルに


s///eg
でいいんだ. e の存在を忘れてた....

「URL を表す正規表現」を $url_regex とすると
s/$url_regex/index($&, 'hoge.com') == -1 ? 'abc.com' : $&/eg;
とか.
    • good
    • 0
この回答へのお礼

ありがとうございます!

"e"オプションってありましたね…。
確かにこれを使っていけそうです☆

大きなヒントをいただきありがとうございました。

お礼日時:2013/04/18 12:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!