- 1 名前:nobodyさん [2007/01/11(木) 02:40:43 ID:uW7xEbZY]
- 【正規表現道場の掟】
・言語不問 ・質問も大歓迎。使用言語を書くのを忘れずに。 正規表現と関係ない話・質問は他スレへどうぞ。
- 162 名前:nobodyさん mailto:sage [2007/09/04(火) 09:42:52 ID:???]
- >>161
> 2オクテッド目以降は*が来てもOKとするにはどうすればよいでしょうか? それ先に言えよ! どういう結果が欲しくて、どう書いたら、どうダメだったか、を具体的に書かんと。 あと、使用してる処理系 (言語やソフトウェア) も。 で、ダメだった正規表現中の [*(\d+)] だけど、 [] は「文字クラス」の正規表現なので、 >>154 の言っているように * ( 数字 + ) のいずれかの「文字」を表す。 「* または数字」を表現したいのであれば、 (\*|\d+) みたいにする。 ので、こうかな。 (\d+)(\.(\*|\d+)){3}
- 163 名前:nobodyさん [2007/09/04(火) 11:21:03 ID:/G1gxUUQ]
- $` (マッチした文字列の前にあるすべての文字列 )
↑これの使い方を教えてください。言語はPerlです。
- 164 名前:nobodyさん mailto:sage [2007/09/04(火) 11:29:12 ID:???]
- >>163
"hoge" =~ /og/; print join(",", $`, $&, $'), "\n"; ↑こんな感じで、この場合は "hoge" に対して "og" がマッチするので、 $`, $&, $' にはそれぞれ "og" の前の "h", "og", "og" の後ろの "e" が格納される。
- 165 名前:nobodyさん [2007/09/04(火) 11:54:02 ID:/G1gxUUQ]
- >>164
できました。ありがとうございます。
- 166 名前:nobodyさん mailto:sage [2007/09/09(日) 01:04:12 ID:???]
- ***.com([0-9]もしくは[a-z]の文字が3つ並び、その後に.com)の表記方法を教えてください
- 167 名前:nobodyさん [2007/09/10(月) 21:26:12 ID:lrmAiBXN]
- >>166
Perl互換の正規表現だと [0-9a-z]{3}\.com
- 168 名前:nobodyさん mailto:sage [2007/09/12(水) 05:01:53 ID:???]
- >>166
\w{3}\.com
- 169 名前:nobodyさん [2007/09/12(水) 11:22:48 ID:DkIOyoGe]
- >>168
それだと大文字とアンダースコアにもマッチしてしまいます。
- 170 名前:nobodyさん mailto:sage [2007/09/15(土) 15:32:58 ID:???]
- <title>ほげほげ</title>
の「ほげほげ」だけを抜き出すのにはどう表記すればいいのでしょうか?
- 171 名前:nobodyさん mailto:sage [2007/09/15(土) 16:48:18 ID:???]
- /<title>([^<]+)<\/title>/
- 172 名前:nobodyさん mailto:sage [2007/09/15(土) 17:17:54 ID:???]
- >>171
ありがとうございます。
- 173 名前:nobodyさん [2007/09/16(日) 01:35:56 ID:6P4HpCmY]
- PHP 4.4.7で
hoge hage 123.txt の中から 123 を抜き出したいんだけど "/^(.+?).txt/" だと当然 hoge hage 123 がマッチしてしまう。 hoge や hage は任意の文字列で数字が入る可能性もあるのだけど、どうやって抽出したらいいんでしょう。
- 174 名前:173 mailto:sage [2007/09/16(日) 02:11:14 ID:???]
- マッチした文字列を
strrev() で逆順にして、今度は txt. で再度マッチングさせたらとりあえず抽出できました。それをもう一度逆順に。 こんな力業じゃなくて他に方法があるんだろうな……。
- 175 名前:nobodyさん mailto:sage [2007/09/16(日) 02:19:07 ID:???]
- ^^
- 176 名前:nobodyさん [2007/09/16(日) 03:52:16 ID:vOvwrq99]
- >>173
前後にデリミタ (「/」) が付いているという事はPerl互換の正規表現関数を使うのでありましょうが、 そうであれば 「.」 はs修飾子がない限り改行にマッチせず、 よって /^(.+?).txt/ は hoge hage 123.txt にマッチせず、 したがって hoge hage 123 がキャプチャされることはないはずです。
- 177 名前:nobodyさん mailto:sage [2007/09/16(日) 12:32:40 ID:???]
- >>173
まあとにかく「マッチしてしまう」とかいうそのコードを晒してみ。
- 178 名前:nobodyさん [2007/09/16(日) 13:59:22 ID:G/qusHMm]
- $bairitsu = 0.5;という風に$bairitsuに倍率を入れておいて
height:244pt を height:122pt… height:244pt を height="150"に といった具合にheight:●●ptやheight="●●"の数値部分を $bairitsu倍して置換するにはどのようにすればいいですかね? やろうとしてることは、エクセルで作ってHTMLで保存したものを、 A4サイズの用紙に合うようにHTMLの中にあるサイズ指定を変更したいです。 使用言語はPerlです。よろしくお願いします。
- 179 名前:173 [2007/09/16(日) 15:18:36 ID:6P4HpCmY]
- >>175
それは……ヒント? それともAA? >>176 失礼。パターンを行頭にしたり行末にしたり改行文字にしたりしてるうちにこんがらかってしまったみたい。 正確には "/^(.+?).txt/" でマッチしました。 >>177 コード的にはこんな感じ。 $string = " hoge hage 123.txt "; preg_match("/^(.+?).txt/", $string, $matches); preg_match("/txt.(.*?)\r/", strrev($matches[0]), $matches); echo strrev($matches[1]); // 結果 123 PHPも正規表現も初心者なので変な書き方してるかもだけど……。
- 180 名前:173 mailto:sage [2007/09/16(日) 15:27:38 ID:???]
- あれ?正確にはも何も最初に書いたのであってるなあ。
なんで「マッチしてしまう」のだろう。
- 181 名前:nobodyさん [2007/09/16(日) 21:38:24 ID:YMkvDZNb]
- >>179
ああ、 改行コードをCRにしているのですね。 私は > 「.」 はs修飾子がない限り改行にマッチせず と申しましたが、 正確には 「LFにマッチせず」 でありまして、 CRにはマッチします。 普通はスクリプトの内部では文字列の改行コードをLFにするものですが、 何か理由があってCRにしているのですか。
- 182 名前:nobodyさん [2007/09/16(日) 21:48:57 ID:YMkvDZNb]
- 改行コードがLFなら、 m修飾子を使うことにより 「^」 が行頭にマッチするようになるのです。
- 183 名前:173 [2007/09/17(月) 00:37:12 ID:/5o1hJUZ]
- >>181
> と申しましたが、 正確には 「LFにマッチせず」 でありまして、 CRにはマッチします。 あー、そういう事なのか……。 勉強になります。 > 何か理由があってCRにしているのですか。 実はいつも決まった形式で入稿されるテキスト原稿を決まった形式のHTMLにするだけの仕事が定期で入ってくるんです。 で、毎回毎回コピペにつぐコピペで対応し続けるのもバカくさいので極力自動化しようと思い、PHPでシコシコ書いている次第。 そのプログラムに食わせるお客さんからの入稿原稿を元に作ってたのでCRになってました。 試しに改行コードをLFにしてm修飾子というのを試したらうまくいきました。 なるほどもらった原稿をLFに変換してから使えばいいわけだな。 ありがとーございました!
- 184 名前:nobodyさん [2007/09/17(月) 01:05:58 ID:T68tRmUw]
- あと1つ指摘しますと、 「.txt」 は 「\.txt」 にすべきですね。
- 185 名前:173 [2007/09/17(月) 15:37:44 ID:/5o1hJUZ]
- > あと1つ指摘しますと、 「.txt」 は 「\.txt」 にすべきですね。
おーなるほど。ありがとうございます。
- 186 名前:nobodyさん [2007/09/18(火) 14:10:13 ID:hpuf++fz]
- Perlを使って、アフィリエイトのコードやJavaScriptなどを含むコメントタグがなぜか削除できません。
例) <!-- コード ・ ・ --> HTMLタグは s/<.*?>//sg; とすれば削除できますが なぜかコメントタグだけが残ってしまいます。 コメントタグの開始「<」と終了「>」以外の全ての文字列・記号・改行コードを削除したうえで s/<>//g; としてみましたが削除することができません。 s/<//g; s/>//g; とするとなぜか削除できます。 うまく削除できる方法をご存知の方がいたら教えて下さい。
- 187 名前:nobodyさん mailto:sage [2007/09/18(火) 16:31:55 ID:???]
- 前処理としてまず s/<!--.*?-->//gs やってみたら?
コメントタグのネストはないだろうし(JavaScriptとかで書き出してたら別だけど・・)
- 188 名前:nobodyさん mailto:sage [2007/09/19(水) 07:54:55 ID:???]
- >>187
レスどうもありがとう。 s/<!--.*?-->//gsでもなぜかうまくいかないので コメント行が現れたらif文でスルーするようにしました。
- 189 名前:nobodyさん mailto:sage [2007/09/19(水) 21:54:47 ID:???]
- PHPで正規表現勉強したいんですが、オライリーのふくろう本を読めるでしょうか?
もちろん本人の技量にもよると思いますが、Perlをまったく知らない人間がという解釈でお願いします。 逆に文字列処理をしたいなら、Perlを一からやっとけみたいなのもありです。
- 190 名前:nobodyさん mailto:sage [2007/09/20(木) 00:20:26 ID:???]
- >>189
preg_.*系関数ならPerl互換なのでふくろう本の記述が使えると思う。 というかね、ふくろう本のキモは処理系にほとんど依存しない3章と4章で、 それ以外はおまけだ。熟読すべし。
- 191 名前:nobodyさん mailto:sage [2007/09/20(木) 01:57:42 ID:???]
- ありがとう。時期を見計らって購入するよ。第三版出るみたいだし
- 192 名前:nobodyさん mailto:sage [2007/09/20(木) 02:42:28 ID:???]
- >>191
え、日本語訳出るの?
- 193 名前:nobodyさん [2007/09/20(木) 13:36:17 ID:KlmMrt1+]
- <TD width="52" height="25" bordercolor="#CCCCCC" valign="middle">
<div align="center">F8FA</div> </TD> これの 「F8FA」の部分をpreg_match_all取得したいのですが、 '/<TD .*><div .*>(.*)</div><\/TD>/Ums' としたのですが、何も取得されません。 どのように表記すれば良いのでしょうか?
- 194 名前:nobodyさん mailto:sage [2007/09/20(木) 13:42:18 ID:???]
- /<TD.*?><div.*?>(.*)?</div><\/TD>/
こんな感じ?
- 195 名前:nobodyさん mailto:sage [2007/09/20(木) 13:44:34 ID:???]
- 試してないけどひとまずパッと見でおかしそうなのを直すとこう?
'/<TD .*>\s*<div .*>(.*)<\/div>\s*<\/TD>/Ums'
- 196 名前:nobodyさん [2007/09/20(木) 17:00:54 ID:SqIRO2nC]
- '#<TD(?:\s[^>]*)?>\s*<div(?:\s[^>]*)?>(.*)</div>\s*</TD>#ms'
- 197 名前:nobodyさん mailto:sage [2007/09/20(木) 19:58:25 ID:???]
- >>193
正規表現は二作出てるから次も一年たった今頃出るかなという予想込みだけど出なかったら出ないのもタイミングかなと。
- 198 名前:nobodyさん mailto:sage [2007/09/20(木) 22:27:42 ID:???]
- >>197
日本語でおk
- 199 名前:nobodyさん mailto:sage [2007/09/20(木) 23:09:32 ID:???]
- >>198
おk!=日本語
- 200 名前:nobodyさん mailto:sage [2007/09/21(金) 00:43:48 ID:???]
- >>191
ソースは?
- 201 名前:nobodyさん [2007/10/02(火) 19:12:55 ID:DsttFroa]
- PHPの正規表現でユーザーエージェント(IE限定)から
ブラウザバージョンとOSのバージョンを取得するため 以下を作成しました preg_match('/Mozilla\/.*(MSIE [0-9\.]+);.*(Win[^;\)]+|Mac[^;\)]+).*/i', $lua, $match) ほぼ間違いなく取得できるのですが唯一以下形式のエージェントのみ 失敗します Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; Yahoo! JAPAN Version Windows 95/NT CD-ROM Edition 1.0.; DigExt) 古いバージョンなので切り捨てても良いとは思うのですが悔しいので どうすれば正しく取得できるか教えていただけないでしょうか? 上記の正規表現では MSIE 5.0 Windows 95/NT CD-ROM Edition 1.0. ほしいのは以下 MSIE 5.0 Windows 98
- 202 名前:nobodyさん mailto:sage [2007/10/02(火) 19:26:37 ID:???]
- m#(MSIE\D*[\d\.]+).*?((?:Win|Mac)\D+\d+)#
こんな風でどう?
- 203 名前:nobodyさん [2007/10/02(火) 19:34:02 ID:DsttFroa]
- >>202
ありがとうございます おかげ様でできました 比較検証して勉強させてもらいます
- 204 名前:nobodyさん [2007/10/05(金) 23:08:47 ID:ivRnBDKk]
- 質問です
$text = "第41条 [国会]は、[国権]の最高機関であつて、国の唯一の[立法機関]である。"; というテキストで[]でくくられた部分を検索エンジンに飛ばすためのリンクに書き換えるための置換処理を行いたいと考えています。 そこで下のように組んでみたところ $text =~ s/\[(.*)\]/(<a href=\/http:\/\/foo.bar?query=\"$1\">$1<\/a>)/; 置換の対象となるカッコは行の先頭の[から行の最後の]までが対象となってしまい。上手く機能しません。 この置換処理はどうかけば、いいのでしょうか?
- 205 名前:nobodyさん mailto:sage [2007/10/06(土) 00:06:57 ID:???]
- >>204
* や + は、そのままだと最長の文字列でマッチしてしまうので、 最短マッチにするために .*? みたいにすると良い。 あと、繰り返し処理させるために、 g オプション (/.../g みたいな) を付けるよろし。
- 206 名前:nobodyさん mailto:sage [2007/10/06(土) 00:07:46 ID:???]
- $text=~ s#\[(.*?)\]#my$r=$1;(my$s=$1)=~s/([^\w ])/'%'.unpack('H2',$1)/ge;
$s=~tr/ /+/;'[<a href="foo.bar?query='.$s."\">$r</a>]"#ges; こんな風でどう?
- 207 名前:nobodyさん [2007/10/06(土) 00:35:40 ID:1+GhnPpX]
- >>205-206
どちらも上手く機能しました。 奥が深いですね
- 208 名前:nobodyさん [2007/10/06(土) 16:42:21 ID:kTx5Crj6]
- 普通の文字として\を表現するにはどうすればいいですか?
C言語風には、'\\'みたいなやつです
- 209 名前:nobodyさん mailto:sage [2007/10/06(土) 17:45:43 ID:???]
- まずはそれを試してみてください
- 210 名前:nobodyさん [2007/10/06(土) 17:50:21 ID:kTx5Crj6]
- ためしたけど、駄目でした。
\\\ってかいたら一個認識した。 でも\\って連続する文字列は、\\\\\\だと駄目だった。 謎 検索に使ってるエディタは、UnEditorです
- 211 名前:nobodyさん [2007/10/06(土) 18:29:58 ID:C0xnGICK]
- >>210
「\\\\」 というエスケープシーケンスが解釈されて文字列 「\\」 になり、 文字列 「\\」 が正規表現として解釈されて 「\」 を表すと見た。 その推測からすると、 「\\」 を表すには 「\\\\\\\\」 と打てばよい。
- 212 名前:nobodyさん [2007/10/06(土) 18:34:59 ID:kTx5Crj6]
- >>211
なんという\ いけました。ありがとうございます。
- 213 名前:nobodyさん [2007/10/07(日) 17:23:56 ID:bdyGFUK8]
- 半角英数文字だと>>205の方法でOKなんすですが、日本語の文字列の場合、エンコードする必要があるので
>>206のようにしなければならないわけですね。今、気がつきましたよ。
- 214 名前:nobodyさん mailto:sage [2007/10/25(木) 15:30:25 ID:???]
- phpで、変数にファイル名を入れて処理したいんですが
正規表現で文字制限をかける場合どのように書けばよいでしょうか? 日本語を含まなければ簡単そうですが、、、、
- 215 名前:nobodyさん mailto:sage [2007/10/25(木) 16:34:35 ID:???]
- >>214
どゆこと?どんな制限をかけたい?
- 216 名前:nobodyさん mailto:sage [2007/10/27(土) 01:42:21 ID:???]
- >>214
つマルチバイト
- 217 名前:nobodyさん mailto:sage [2007/11/05(月) 12:34:21 ID:???]
- (愛うえお) [下記kuけこ] saし素せそ [07.07.07]
↑の様にファイルに名前をつけているのですが、これを下のようにリネームしたいのです。 (愛うえお) [07.07.07] [下記kuけこ] saし素せそ [07.07.07]は日付です。2006/10/15なら[06.10.15]となります。 正規表現でどのように表現したら一括変換できるでしょうか? どなたか御教示ください。
- 218 名前:nobodyさん [2007/11/05(月) 12:38:12 ID:EztAcqYR]
- もしスレ違いでしたら案内していただけると助かります
- 219 名前:nobodyさん mailto:sage [2007/11/05(月) 12:47:34 ID:???]
- >>217
まずは >>1 の二項目。
- 220 名前:217 [2007/11/05(月) 13:09:25 ID:EztAcqYR]
- >>219
失礼しましたPerl5です。 www.hi-ho.ne.jp/~babaq/bregexp.htmlのDLLを使って Nameryでリネームするつもりです。 的外れなレスだったらすみません
- 221 名前:nobodyさん mailto:sage [2007/11/05(月) 13:59:05 ID:???]
- 「連続置換・マクロ」にチェックして、こんなんでどう?
s/^(\(.+?\))( \[.+?\] .+?)( \[.+?\])/\1\3\2/ 空白の処理とか適当なので、あとは自分で調べていろいろいじってみてちょ。
- 222 名前:nobodyさん [2007/11/05(月) 14:37:50 ID:EztAcqYR]
- >>221
バッチリできました!ありがとうございました しかし依頼するカタチを間違えていましたorz gomennnasaigomennnasaigomennnasai (愛うえお) [07.07.07] [下記kuけこ] saし素せそ ↑ではなく↓にするにはどうすれば・・・ (愛うえお) [下記kuけこ] [07.07.07] saし素せそ
- 223 名前:nobodyさん [2007/11/05(月) 14:41:33 ID:EztAcqYR]
- 間違えた>>222は無視してください
はぁゆとりすぎて面目ない
- 224 名前:nobodyさん [2007/11/12(月) 05:47:51 ID:Kg6xKnVX]
- 「あいうえおABC+F481ABC+F485かきくけこABC+F7A5さしすせそABC+F3F0ABC+F39EたちつてとABC+F65AなにぬねのABC+F485ABC+F7A5はひふへほABC+F7A5ABC+F39Eまみむめも」
上記の中に、「ABC+16進数x2回」がいくつ含まれているかをPHPの正規表現で表すにはどうかけばよろしいでしょうか? ご鞭撻よろしくお願いいたします。
- 225 名前:nobodyさん mailto:sage [2007/11/12(月) 10:41:44 ID:???]
- >>224
正規表現はいまひとつなのでもっと上手いやり方があるかもしれないが・・・ $input_str = "あいうえおABC+F481ABC+F485かきくけこABC+F7A5さしすせそABC+F3F0ABC+F39EたちつてとABC+F65AなにぬねのABC+F485ABC+F7A5はひふへほABC+F7A5ABC+F39Eまみむめも"; echo preg_match_all("/ABC\+[A-F\d]{4}/",$input_str,$out_ary); ※$out_aryは無いとエラーになるので消さないで
- 226 名前:nobodyさん [2007/11/13(火) 16:45:36 ID:KDxCSN/c]
- 質問です
PHPスクリプトでpreg_match("/^[^@]+@[^.]+\..+/", $superunkoman)) という正規表現があったのですが ^[^@]+ ←最初の文字が@以外の文字の一回以上の繰り返し @ ←で、@が入り [^.] ←この部分が理解できません。 教えてください
- 227 名前:nobodyさん mailto:sage [2007/11/13(火) 17:15:59 ID:???]
- >>226
ドット以外の文字列が1つ以上 hoge@.ドメイン.ne.jp だとか画駄目ってことじゃないの?
- 228 名前:nobodyさん mailto:sage [2007/11/13(火) 17:39:32 ID:???]
- >>227
ありがとうございました。そのとおりですね
- 229 名前:nobodyさん mailto:sage [2007/11/13(火) 22:44:37 ID:???]
- 質問です
phpスクリプトで $str = ereg_replace( "(https?|ftp)(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)", "<a href=\"\\1\\2\">\\1\\2</a>", $str); この正規表現の(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)の部分とhref=\"\\1\\2\">\\1\\2</a>この部分は 何を表しているのか教えてくれませんか?
- 230 名前:nobodyさん [2007/11/14(水) 12:22:47 ID:E8xVrSo0]
- あげわすれ
- 231 名前:nobodyさん mailto:sage [2007/11/14(水) 13:37:57 ID:???]
- >>230
次回からはまずマニュアル嫁 PHPマニュアルより引用 string ereg_replace ( string pattern, string replacement, string string ) pattern の中に括弧でくくられた部分 文字列が含まれている場合、 replacement の中に \\数字 のような部分文字列を埋め込むことも できます。この部分は、 「数字」番目の括弧でくくられた部分文字列に マッチする文字列に 置き換えられます。また、\\0 は文字列全体を 指します。9 個までの部分文字列を使うことができます。括弧は 入れ子になっていても構いません。この場合は開き括弧 '(' が 最大 9 個まで使用可能です。
- 232 名前:nobodyさん [2007/11/23(金) 11:29:24 ID:OIbrK2sw]
- 正規表現を先輩から教えてもらったのですが、
文字列 [全ての文字] を 正規表現 [[]([^\]]+)] で 全ての文字 を取り出 すことができますが、 文字列 {全ての文字} で 全ての文字 を取り出す正規表現を教えてください。
- 233 名前:nobodyさん mailto:sage [2007/11/23(金) 15:30:11 ID:???]
- >>5
- 234 名前:nobodyさん [2007/11/23(金) 20:53:35 ID:tvqFA7ba]
- それは無理ですよ
すべての文字 を取り出す事は
- 235 名前:nobodyさん [2007/11/27(火) 18:05:34 ID:fIXcwnBh]
- Dカップ以上の25歳以下で抽出したいです
PHP5です
- 236 名前:nobodyさん mailto:sage [2007/11/27(火) 19:15:14 ID:???]
- [D-Z]カップ.*(1?[0-9]|2[0-5])歳
- 237 名前:nobodyさん [2007/11/28(水) 13:29:18 ID:fpWBgokp]
- PHPで正規表現であれやこれやと苦戦してます。
で、正規表現チェッカー ttp://www.asterworld.com/ja/soft/regexchk.html という物をみつけて、こりゃ便利だ!と思ってたのですが 作成した正規表現を preg_replace に設定してもマッチしてくれません。 そんなに方言があるとも思えないのですが... C#2005の正規表現のようなのですがPerlの正規表現と何がちがうのでしょうか。 C#2005の正規表現をPerlの正規表現に変更するには無理なのでしょうか。 Perlの正規表現を作成するようなソフトはあるのでしょうか? 恐れ入りますがどなたか教えてください 頭がゴチャゴチャしてきて..
- 238 名前:nobodyさん mailto:sage [2007/11/28(水) 15:10:44 ID:???]
- もっとかなり基本的なところで勘違いしているんではないかと想像。
まずは、これ以上ないってくらい単純な正規表現で挙動を比較してみて、 そこから順次複雑な正規表現にしていって差異を見てみては。
- 239 名前:237 mailto:sage [2007/11/28(水) 15:41:05 ID:???]
- ネットで調べても、どの言語の正規表現なのか今ひとつ判らないので
取り合えずアマゾンで本を注文しました。 言語ごとの差が判るようなものがあれば...
- 240 名前:238 mailto:sage [2007/11/28(水) 15:48:56 ID:???]
- C# なら .NET なんだろうけど、「詳説 正規表現 (第2版)」には差異などが載ってる。
それで、ぱっと見で、基本的なところは Perl と .NET とで大した差は無いと思う。
- 241 名前:237 mailto:sage [2007/11/29(木) 13:36:57 ID:???]
- 「正規表現の達人」って本を手にして今、読んでますが、
お昼食べた後なんで眠くて眠くて フワァァ(/ 0 ̄)~゜ がんばってみます。。
- 242 名前:nobodyさん mailto:sage [2007/12/11(火) 20:35:33 ID:???]
- すみません、ヘルプをお願いします。
PHPにて、特定の画像ファイル名を持つ<IMG>タグを抽出するという正規表現を作りたいのですが 上手く行かなくて困っております。 どなたか、お助けください。。。
- 243 名前:nobodyさん mailto:sage [2007/12/12(水) 01:18:37 ID:???]
- >>242
もちっとくわしく。src属性以外に属性をもつのかとか。 多分alt属性がついていそうだけど。 preg_match('/<img .*?src=(["¥'])特定のファイル名を表す正規表現¥¥1 .*?>/', src); とかか。今適当に作ったのでうまく動くかどうかはわからんけど
- 244 名前:nobodyさん [2007/12/19(水) 16:38:31 ID:H15tWjcK]
- PHPのpreg_replaceなんですが、おたたすけ願います。
特定の文字列で囲まれた文字列を変換しない正規表現を教えてください。 たとえば preg_replace("/aaa/", "[\1]", "aaa aaa aaa aaa aaa") だと結果は "[aaa] [aaa] [aaa] [aaa] [aaa]" になりますが preg_replace("/aaa/", "[\1]", "aaa{{{aaa aaa aaa}}}aaa") となっていたときに "[aaa]{{{aaa aaa aaa}}}[aaa]" という結果を取得したいんですが 思うように出来ません。 答えを直接出なくてもいいのでヒントだけでも教えてください。
- 245 名前:nobodyさん mailto:sage [2007/12/19(水) 18:16:44 ID:???]
- >>244
後読み表明は量指定子を含められないから、もしpreg_replaceだけでやろうとするなら、 それ以外の部分を食わせておいて置き直すという、やや気持ち悪いことになると思う。 例えばこんなふうに preg_replace('/(.*?(?:\\Q{{{\\E.*?\\Q}}}\\E.*?)*)(aaa)/', '$1[$2]', "aaa{{{aaa aaa aaa}}}aaa"); 分解してから対象の部分だけ処理する等の方法も検討した方が宜しいかと。
- 246 名前:nobodyさん mailto:sage [2007/12/19(水) 18:44:19 ID:???]
- 大田区ホームページ:職員の不祥事について(処分の公表)
www.city.ota.tokyo.jp/oshirase/mokutekibetsu/other/fusyouji_syobun/index.html 当区職員が傷害の容疑で逮捕されるという事件につきましては、新聞等での報道やホームーページで公表したところですが、今回、事実関係が明らかになり、以下のとおり懲戒処分を行いましたので公表いたします。 区民の皆様の信頼を裏切ることとなり、誠に申し訳ありません。あらためて、お詫びいたします。 懲戒処分とは 職員が一定の義務違反を犯した場合に、公務の規律と秩序を維持することを目的として、その責任を追及するために制裁として行う処分です。 大田区では懲戒処分の公表基準に基づき、免職処分をした場合や特に区民の関心が大きい事案又は社会的影響が大きい事案について、個別の懲戒処分を公表します。 (懲戒処分の制度の詳細は、大田区人事白書をご参照ください。) 処分発令日 平成19年12月19日 被処分者氏名 建築調整課 吉原 幸光 処分の内容 停職3月 処分の理由 一般非行関係(法令に違反し、全体の奉仕者たるにふさわしくない非行があったため) 事件の概要 この職員は、平成19年11月16日(金曜日)、勤務時間終了後、東神奈川駅周辺で飲食した後、帰宅途中のJR京浜東北線川崎―蒲田間の電車内において、乗客男性に全治4週間の怪我を負わせる暴行を働き、傷害の容疑により蒲田警察署に現行犯逮捕されました。 同職員は、東京簡易裁判所に起訴され、罰金刑を申し渡されています。
- 247 名前:nobodyさん [2007/12/22(土) 08:43:52 ID:KKfYoqPi]
- すみません、教えてください。
PHPで携帯電話に文字列を表示する際に、 電話番号の部分をteltoリンクにしたいと思い以下のように書きました。 $bodySTR = preg_replace('/([-0123456789]+)/', '<a href="tel:\\1">\\1</a>',$bodySTR); 当然ながらこれだと、「100円」や「〒123-4567」にも反応してしまいます。 そこで、 「03-1234-5678」「090-1234-5678」「03−1234−5678」等にマッチして 「100」や「123-4567」にはマッチしない正規表現は可能でしょうか?
- 248 名前:nobodyさん mailto:sage [2007/12/22(土) 14:06:28 ID:???]
- 可能です
- 249 名前:nobodyさん mailto:sage [2007/12/22(土) 16:17:35 ID:???]
- /(0¥d+-¥d{1,4}-¥d{4})/
でどうよ
- 250 名前:nobodyさん [2007/12/22(土) 17:39:05 ID:6MoMAQ1+]
- perlの正規表現について質問です。
>>244の方と同じ様なものなのですが "test <a href="test.jp"> test" の様な文字列があった場合、タグ内のtestは変更せずに "[test]<a href="test.jp">[test]" という形にしたいのですが、どのようにすれば宜しいでしょうか。 一度置換した後、<>タグ内の物は[]を外す方法も考えてはみたのですが、 思うように動作させる事が出来ず。ご教授の程、宜しくお願い致します。
- 251 名前:nobodyさん mailto:sage [2007/12/22(土) 17:52:18 ID:???]
- s/(<.*?>|test)/$1?$1:"[$2]"/ges
- 252 名前:250 mailto:sage [2007/12/22(土) 18:04:13 ID:???]
- >>251
なるほど、どうも有難う御座いました!
- 253 名前:nobodyさん [2008/01/14(月) 12:16:38 ID:6AXqvVgD]
- 時間(13:00:00〜18:00:00)までを正規表現であらわしたいのですが、
1[3-8]:[0-5][0-9]:[0-5][0-9] という感じに今なっています 誰が見てもわかりやすいしこれでもいいのですが、もっと短い書き方はないものでしょうか? [0-5][0-9]ここが反復なので、([0-5][0-9]:?){2}とか思いつくのですが、 これだと最後にコロンが入っててもマッチしてしまうので回避できるような書き方はないものかなぁと。
- 254 名前:nobodyさん mailto:sage [2008/01/14(月) 13:51:53 ID:???]
- 1[3-8](?::[0-5]\d){2}
- 255 名前:nobodyさん [2008/01/15(火) 02:35:00 ID:HyHnFj45]
-
私が小学生の頃、 日本中でノストラダムスの予言が大流行していた。 「1999年の7月に人類は滅亡する!」 という例のお騒がせ終末予言である。 大人になって社会に出て働きだして、 あくせくと忙しく日々を過ごしながら、 1999年は、 ありふれた日常の中であっさりと過ぎていった。 人類は滅ばなかった。 これからここで、 1999年に起こるかもしれなかった人類の壊滅的破局を、 誰にも知られずにこっそりと回避させた人たちがいた... という設定で、 荒唐無稽なストーリーを描いてみたい。 無論、100%完全なフィクションである。 www5.diary.ne.jp/logdisp.cgi?user=532063&log=200705
- 256 名前:nobodyさん [2008/01/20(日) 11:20:53 ID:TPbCvsXG]
- /([^>|\+|\s]+)\s*([>|\+]?)\s*/g
この正規表現はどういうことでしょう? 何にマッチさせようとしているのでしょうか。 JavaScriptです。
- 257 名前:nobodyさん mailto:sage [2008/01/20(日) 11:37:26 ID:???]
- []の中で|を使ってOR条件にしてるから書いた人は勘違いしてる
- 258 名前:nobodyさん [2008/01/20(日) 12:50:55 ID:TPbCvsXG]
- 本来なにをしたかったんでしょうか・・・。
- 259 名前:nobodyさん mailto:sage [2008/01/21(月) 16:00:34 ID:???]
- PHPの正規表現についての質問です。
2chのdatを各要素毎にキャプチャしたいのですが、 preg_math_all('/((.*)<>)*/', $dat, $match); と書いて実行すると全体が丸々$matchへ格納されます。 $datへは「 要素1<>要素2<>要素3<>要素4<>要素5 」という形式のデータが入っており要素5は1行目にのみ存在します。 また、各要素は空欄の場合もあります。 初歩的な質問で申し訳ありませんが、よろしくお願いします。
- 260 名前:nobodyさん mailto:sage [2008/01/21(月) 16:01:39 ID:???]
- >>258
こちとらお前さんにそれを聞きてえぐらいだよ。
- 261 名前:nobodyさん mailto:sage [2008/01/21(月) 16:03:38 ID:???]
- >>259
preg_split で "<>" で配列にばらした方が扱いやすいかも。
- 262 名前:259 mailto:sage [2008/01/21(月) 16:15:53 ID:???]
- >>261
レスありがとうございます。 確かにphpには要素を分解する為の便利な関数が始めから用意されておりますが、今回はあえてpreg_matchを用いて自身で分解してみたく思います。 自分にはハードルが高い気もするので、手始めに要素5だけを取り出そうと挑戦してみたのですが、 /<>(.+)$/ と書くと要素3<>要素4<>要素5がキャプチャされてしまいます。 やはり当方の正規表現に対する解釈が根本的に間違っているのでしょうか。 連投になり大変申し訳ないのですが、こちらの質問へのみご回答お願いいたします。 (>>259は回答を得ましても自分には理解の範疇を超えていると判断しましたので)
|

|