正規表現で $にかこまれた 半角英数字のみを抽出したいと思っております。



$name$
$test2$
$test3$

$name$ を 名前 に置換

などです。

よろしく御願いします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2008/09/12 02:46:27
  • 終了:2008/09/19 02:50:02

回答(3件)

id:kn1967 No.1

kn1967回答回数2915ベストアンサー獲得回数3012008/09/12 04:42:40

ポイント27pt

環境や処理系によって微妙に異なる場合がありますので以下はあくまでも例としてお考え下さい。

Perl

$a = 'name$name$name';
print "$a\n";
$a =~ s/\$.*\$/\$名前\$/;
print "$a\n";

php

<?php
$a = 'name$name$name';
echo "$a\n";
$a = preg_replace("/\$.*\$/","\$名前\$",$a);
echo "$a\n";
?>

URLはダミーです。

http://q.hatena.ne.jp/1221155184

id:kichitaka

ありがとうございます!

2008/09/12 06:07:59
id:GoldenDawn No.2

GoldenDawn回答回数426ベストアンサー獲得回数812008/09/12 08:03:14

ポイント27pt

1番の回答ではおかしな事になりそうな気がします。

<?php
$a = 'name$name$name$name$name';
echo "$a\n";
$a = preg_replace("/\\$.+?\\$/", "名前", $a) ;
echo "$a\n";
?>

http://q.hatena.ne.jp

id:kichitaka

ありがとうございます。$name$の中身を正規表現で大文字小文字数字で構成されたもの。としたいのですがどうすればよいでしょうか?特定の物ではなく、$[A=Za-z0-9]$ のようなイメージです。

2008/09/13 02:32:23
id:Mars No.3

Mars回答回数203ベストアンサー獲得回数202008/09/12 10:37:26

ポイント26pt

Perl例です。

Perlだと置換対象に関数を指定して返値で置換できますので、色々置換するとき便利。

$str='abc$name$def$test1$ghi$***jkl$test2$';

$str =~ s/\$(\w+?)\$/func($1)/eg;
# \w は [_a-zA-Z0-9]と同じ、「 _ 」もNGならちと違う。

sub func{
	my $key = shift;
	my $ret;
	if($key eq 'name') {
		$ret = '名前';
	} elsif($key =~ /^test(\d?)$/) {
		$ret = 'テスト'.$1;
	}
	return $ret;
}

http://www.rfs.jp/sb/perl/02/09.html

id:kichitaka

ありがとうございます

2008/09/16 21:27:58

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません