- 1 名前:nobodyさん [2007/01/11(木) 02:40:43 ID:uW7xEbZY]
- 【正規表現道場の掟】
・言語不問 ・質問も大歓迎。使用言語を書くのを忘れずに。 正規表現と関係ない話・質問は他スレへどうぞ。
- 431 名前:nobodyさん mailto:sage [2008/12/28(日) 04:14:06 ID:???]
- 失礼します
使用言語はperl5です 配列に、前からマッチしたところまでの文字列を繰り返し入れようとしています ($str = 'hogehugahage'; という文字列があって、hでマッチさせたら @data = ['h', 'hogeh', 'hogehugah'] という配列になることを想定しています) @data = $str =~ m/h/g; のときは予想どおり @data = ['h', 'h', 'h'] となったのですが、 @data = $str =~ m/^.*h/g の場合は @data = ['hogehugah'] となって1回最大マッチするだけのようです どうすれば予想通りの結果になるでしょうか?
- 432 名前:nobodyさん mailto:sage [2008/12/28(日) 08:21:40 ID:???]
- $str = 'hogehugahage';
$c= substr($str, 0, 1); while ($str=~ /$c/go){ push(@data, substr($str, 0, pos($str))); } for (@data){print $_,"\n";} 正規表現使わないとダメなの?
- 433 名前:431 mailto:sage [2008/12/28(日) 13:37:57 ID:???]
- >>432
ありがとうございます それでいけそうです 実は正規表現を必ず使わなきゃいけないというわけではなく、 もっと簡潔にかけるならなんでも大丈夫です
- 434 名前:nobodyさん mailto:sage [2009/01/01(木) 19:19:28 ID:???]
- 先達のみなさま、Perl5+EUC環境で質問させてください
文字列の中で、漢字をのぞいた全角文字(全角数字、全角アルファベット、全角カタカナ)と 一部記号(丸括弧や全角スペースなど)以外が入っていたらマッチさせる、という処理をやろうとしています 文字クラスに許可する文字コードを細かく書いて、その否定で取れるかと思ったんですが $txt =~ /[^xA3\xB0-\xB9]/ のような書き方まで来て、詰まってしまいました $txt =~ /[^a-zA-Z0-1!#$ @]/ みたいな感じで、複数の文字コードを書くにはどうしたらいいんでしょうか? ご教示お願いいたします
- 435 名前:nobodyさん mailto:sage [2009/01/02(金) 02:24:41 ID:???]
- >>434
どうしたらいいってがんばって列挙するよりないと思うよ。 2byteのならびのあるパターンを除外したいという話だろうから、^ を使った形では そう簡単にはかけないと思うけど。
- 436 名前:434 mailto:sage [2009/01/03(土) 20:08:16 ID:???]
- >>435
ありがとうございます 何とか地道にがんばります
- 437 名前:nobodyさん mailto:sage [2009/01/15(木) 22:57:08 ID:???]
- PHP5を使用しています。
<pre>タグで囲まれた文字列の中の<br />を削除したいのですが、どのようになりますでしょうか。 例) 置換前 <pre> aaa<br /> bbbb<br /> </pre> 置換後 <pre> aaa bbbb </pre> 宜しくお願いします。
- 438 名前:nobodyさん mailto:sage [2009/01/15(木) 23:33:28 ID:???]
- $s= <<<EOT
置換前 <pre> aaa<br /> bbbb<br /> </pre> 置換後 <pre> aaa bbbb </pre> EOT; echo preg_replace("#(<pre>.*?</pre>)#es", "str_replace('<br />', '', '$1')", $s);
- 439 名前:438 mailto:sage [2009/01/15(木) 23:45:12 ID:???]
- preg_replace("#<pre>.*?</pre>#es", "str_replace('<br />', '', '$0')", $s);
括弧は要らないか
- 440 名前:437 mailto:sage [2009/01/16(金) 00:04:22 ID:???]
- 出来ました!すっげ。
- 441 名前:nobodyさん mailto:sage [2009/01/19(月) 01:18:40 ID:???]
- Irvine書式のURL展開アルゴリズムを教えてください。
・[?-?]表記による数値・アルファベットの連番 ・[]内1コめの?の桁数に応じて0埋め ・[]内の展開箇所は複数可 といったところです。 言語は出来ればperl、次点でjsやvbsですが特に問いません。 以下のよう変換されるかんじです。よろしくお願いします。 >abc[1-2].jpg abc1.jpg abc2.jpg >abc[09-10].jpg abc09.jpg abc10.jpg >abc[1-2]de[099-101].jpg abc1de099.jpg abc1de100.jpg abc1de101.jpg abc2de99.jpg abc2de100.jpg abc2de101.jpg >[a-b][01-02][4-5].jpg a014.jpg a015.jpg a024.jpg a025.jpg b014.jpg b015.jpg b024.jpg b025.jpg
- 442 名前:nobodyさん mailto:sage [2009/01/19(月) 03:14:04 ID:???]
- >>441
回答とは全然関係ないですけど、 hからttp://とつなげて書くと、 検索エンジン等のクローラがそれら>>441のリンクを全てなめるので、 ネットワークリソース的にあまりよろしくないです… 今後そのように例示される際には hを抜いたり大文字にしたり等、 リンクにならないよう工夫をご検討いただけると、 一インターネット利用者としては嬉しい限りです
- 443 名前:nobodyさん mailto:sage [2009/01/19(月) 03:23:29 ID:???]
- あまりよろしくないって数字で言うとどれくらい?
- 444 名前:nobodyさん mailto:sage [2009/01/19(月) 03:24:54 ID:???]
- サァン!
- 445 名前:nobodyさん [2009/01/19(月) 04:50:02 ID:cs1ls7yv]
- ググったのですが、分からなかったので質問させてください。
align=left>1234567891011121345 上記を align=left>1011121345 こう置換したいのですが left>.*?1011121345 こうしてみたのですが、出来ませんでした。 どう置換すれば、良いのでしょうか、よろしくお願いします。
- 446 名前:nobodyさん mailto:sage [2009/01/19(月) 05:23:37 ID:???]
- >>445
left>.*1011121345
- 447 名前:nobodyさん mailto:sage [2009/01/19(月) 09:02:38 ID:???]
- s/>\d*1011121345//
- 448 名前:441 mailto:sage [2009/01/19(月) 14:17:19 ID:???]
- なんだかオープンソースだったようで自己解決しました。
>>442 いまだにh抜きを強要する人っているんだね。 見ず知らずの他人一人一人を啓蒙していくよりも 管理者へ[http://」をNGワードに追加してくれるよう説得した方がいいんじゃないの? 有益であれば受け入れてくれるはず。
- 449 名前:nobodyさん mailto:sage [2009/01/19(月) 14:46:18 ID:???]
- キミは自分さえよければ他はどうでもいいんだね。
まあがんばってよ。
- 450 名前:nobodyさん mailto:sage [2009/01/20(火) 02:49:36 ID:???]
- >>442が強要に見えるようじゃ苦労しそうだな
- 451 名前:nobodyさん [2009/01/20(火) 03:53:44 ID:TjAtrikI]
- ざっと眺めた感じだと
http〜リンクを見るたび指摘(要望)してしまう442 その指摘(要望)が強要に見えてしまう441 どちらも2chに向かないタイプではあるが 頻度の度合いからして苦労するのは441の方が上だな 公衆便所のトイレットペーパーが三角に折れてなかったらイラっとしちゃうタイプでそ
- 452 名前:nobodyさん mailto:sage [2009/01/20(火) 04:11:05 ID:???]
- あ〜ハイハイ自治厨vs爆笑田中の構図ね
スレ違いだから他でやってくれ
- 453 名前:nobodyさん [2009/01/22(木) 00:53:40 ID:2qACQkO/]
- 正規表現で$文字を含む検索や置換ってど〜してます?
- 454 名前:nobodyさん mailto:sage [2009/01/22(木) 01:00:03 ID:???]
- お前は何を言ってるんだ
- 455 名前:nobodyさん mailto:sage [2009/01/22(木) 02:57:05 ID:???]
- >>453
$は海外の通貨記号なのでうまくいかない。 \$のようにローカルな通貨記号を重ねればうまくいく。
- 456 名前:nobodyさん mailto:sage [2009/01/22(木) 03:22:48 ID:???]
- >>455
何言ってんだこいつ
- 457 名前:nobodyさん mailto:sage [2009/01/22(木) 17:35:54 ID:???]
- <br>***********
----- 上記のような文字列で「*」には日本語と英語が混ざっています。 そこで、、<br>から-までの間から、英語文字だけを削除するような正規表現って無いでしょうか? <br>から-の部分は改行が入ってます。 ご存知の方居られましたら、よろしくお願いします。
- 458 名前:nobodyさん mailto:sage [2009/01/22(木) 17:45:32 ID:???]
- >>457
>無いでしょうか? そりゃつくりゃあるだろ
- 459 名前:nobodyさん mailto:sage [2009/01/22(木) 17:56:19 ID:???]
- >>458
すみません。言葉足らずでした。 普段Speeeeedをいうソフトを使っているのですが、これで>>457は可能でしょうか?
- 460 名前:nobodyさん mailto:sage [2009/02/01(日) 00:44:32 ID:???]
- >>459
ここ正規表現のスレ ソフトの使い方はスレ違い、ソフトウェア板へどうぞ
- 461 名前:OraOra [2009/02/01(日) 01:57:15 ID:2VNzjYUZ]
- 検索文字の中であるパターンの検索の仕方が
分からず困っています。 どなたか御教授お願いします。 プラットフォームはOracleのPL/SQLです。 検索対象は以下の日付書式の文字です。 'yyyymmdd hh24:mi:ss' 以下のように正規表現の結果を関数で受取り その結果をチェックしています。 bool_result := regexp_like('20080230 11:20:22','(20)[0-9]{2}(0[1-9])|1[0-2])(0[1-9]|[12][0-9]|3[01]) (0[0-9]|1[0-9]|2[0-4]):([0-5][0-9]):([0-5][0-9])'); if bool_result then dbms_output.put_line('OK'); else dbms_output.put_line('NG'); end if; 現状では上記の正規表現で'0230'、'0231'のチェックが出来ず困っています。 上記の正規表現の中で'0230'、'0231'も含めてチェックする方法を ご存知の方いましたらどなたか御教授お願いします。
- 462 名前:nobodyさん [2009/02/02(月) 21:43:16 ID:H9hEncfV]
- 「id="72157612930889935" primary="3224910389" secret="be0cf48b4f" server="3468" farm="4" photos="131" videos="0"」という文字列から、
「id=""」の数字を抜きたいのですが(この例であれば「72157612930889935」が欲しいです) $patern = 'id="(.*)" ?'; ereg($patern,$line,$id); echo $id[1]."<br />\n"; では最後のvideosの終わりのダブルコーテーションまで入ってしまいました。 >>421に近いと思うのですが?で最短マッチ?になるような気もしますし >>412にあるように?は0か1回の繰り返しのようにも思うし…。 OSはCent4系、PHP4.1.3、関数はeregを使いました。どなたか助けて下さい
- 463 名前:nobodyさん mailto:sage [2009/02/02(月) 21:51:38 ID:???]
- id="([0-9]*) とか・・
- 464 名前:462 [2009/02/02(月) 21:55:09 ID:H9hEncfV]
- >>463
神!ありがとうございました。 ?は結局使わず終いでしたが?とか難しいのを使うよかよっぽどスマートす。
- 465 名前:nobodyさん mailto:sage [2009/02/05(木) 13:33:36 ID:???]
- ?と*の意味を知ってたら難しいとかの発言にはならない
- 466 名前:nobodyさん mailto:sage [2009/02/06(金) 11:54:32 ID:???]
- だよね。
{0,1}か{0,1,2,3...}かの違いだけだ。
- 467 名前:nobodyさん mailto:sage [2009/02/06(金) 16:00:49 ID:???]
- 質問する人は最低限基本は知ってて欲しいと思う今日この頃
- 468 名前:nobodyさん mailto:sage [2009/02/10(火) 00:16:26 ID:???]
- F, f, t, S, P が正規表現のとき、
FtSPPP または FfSPPPP は F(tS|fSP)P{3} より短くなりますか? PPP と PPPP ではなく X と Y (Fの直後に来るものによってSの後に来るべきものがまったく違う場合) には応用可能でしょうか?
- 469 名前:nobodyさん mailto:sage [2009/02/10(火) 00:53:38 ID:???]
- F(tS|fSP)PPP
- 470 名前:nobodyさん [2009/02/23(月) 09:51:32 ID:0L52Pp6H]
- .*?
これの意味を教えて下さい。
- 471 名前:nobodyさん mailto:sage [2009/02/23(月) 10:49:52 ID:???]
- 「.」はカニだな
「*」は0匹以上の生息してるやつ最後まで つまり、「.*」でカニがいるだけ全部を捕り尽くすという意味(昨今の乱獲問題) そこで捕り尽くしたら絶滅するという問題を受けて「.*?」という思想が考え出された 意味は、最初にカニがいたらその一匹を捕まえて漁を止めるということ
- 472 名前:nobodyさん [2009/02/23(月) 15:41:23 ID:0L52Pp6H]
- >>471
では、 .*? と .? の違いを教えて下さい。
- 473 名前:nobodyさん mailto:sage [2009/02/23(月) 17:58:21 ID:???]
- >>472
「.」はカニだな 「?」は捕れるかとれないか分らないがとりあえず努力するという意味 つまり、「.?」で幻のカニ探索するという意味
- 474 名前:nobodyさん [2009/03/02(月) 19:46:41 ID:/g2x4kDh]
- phpです。
たとえば普通に google.co.jpと書いてあるものと <a href="google.co.jp">test</a>と書いてある文字列があります。 この文字列内のタグになってないUrlをAタグでリンクを張りたいんですがどうしたらいいでしょうか。
- 475 名前:nobodyさん mailto:sage [2009/03/02(月) 21:22:30 ID:???]
- httpから始まり、半角英数字と.?&%が含んでるか見ればおk
- 476 名前:nobodyさん mailto:sage [2009/03/05(木) 18:30:50 ID:???]
- >>471
先生 ノシ 「.*?」で最初の一匹目のカニも取れませんでした。 でも幻のカニは取れたみたいです。
- 477 名前:nobodyさん mailto:sage [2009/03/11(水) 00:46:27 ID:???]
- *.2ch.net/*/test/bbs.cgi*
これを正規表現にすると、どうなりますか?
- 478 名前:nobodyさん mailto:sage [2009/03/11(水) 01:27:39 ID:???]
- *.2ch.net/*/test/bbs.cgi*
- 479 名前:nobodyさん mailto:sage [2009/03/11(水) 11:15:58 ID:???]
- >>477
"{^https?://[0-9a-zA-Z]*\.2ch\.net/[0-9a-zA-Z]*/test/bbs\.cgi[0-9a-zA-Z/_-]*$}"
- 480 名前:nobodyさん mailto:sage [2009/03/20(金) 02:34:11 ID:???]
- phpのクラスファイルの特定の関数を正規表現で抜き出したいのですが可能でしょうか?
例 class.test.php から public function test($a){ 本文 } スケルトンコードの場合簡単に抜き出せるのですが、 本文中にif,swichなどで } が存在した場合どうすれば良いのか悩んでいます。
- 481 名前:nobodyさん mailto:sage [2009/03/20(金) 04:11:43 ID:???]
- {が出たら探す}を1つ増やせばいいじゃん
- 482 名前:nobodyさん mailto:sage [2009/03/20(金) 22:15:43 ID:???]
- 言語は
BoostライブラリBoost.Xpressiveか、Boost.Regexか、Boost.Spirit です。(標準C++,コンパイラg++。) 括弧の対応のバランスがとれているならマッチさせるという正規表現はどう書けますか? boost::xpressive::sregex parens; parens = *( '(' >> by_ref(parens) >> ')' ); だと ()→マッチ ()()→マッチ ()(()((()))())→マッチ (()))))→マッチしない です。 私としては(1+3)*(4+(8-9))の様に括弧以外の文字が含まれていても括弧のバランスがとれているか判定できるようにしたいのですが。 ただし括弧としては ( か ) だけを想定し、{}[]などは判定の対象にはせず、数式として成り立っているかどうかなども判定せず、あくまで ( と ) のバランスだけを見たいです。
- 483 名前:nobodyさん mailto:sage [2009/03/20(金) 22:25:59 ID:???]
- >>481
できました、ありがとうございました。 こんな感じで、簡単でしたね、、、 /function test.*?\{.*? (\{.*?\}.*?)*? \}/s
- 484 名前:nobodyさん mailto:sage [2009/03/20(金) 23:13:32 ID:???]
- echo内の { } にも対応してみました。
これでほぼ完璧かなぁ、、、 /public\sfunction\stest_if_text.*?\{.*?(\{.*?("(.*?\{*?.*?|.*?\}*?.*?)*?".*?)*?\}.*?)*?\}/s
- 485 名前:nobodyさん mailto:sage [2009/03/20(金) 23:18:29 ID:???]
- センスねえな
ムダがおおい
- 486 名前:nobodyさん mailto:sage [2009/03/20(金) 23:28:45 ID:???]
- 関数名だけで対応すると
/[public|private|protected]+\s+[static]?\s?function\s+関数名.*?\{.*?(\{.*?("(.*?\{*?.*?|.*?\}*?.*?)*?".*?)*?\}.*?)*?\}/s こんな感じかなw 読みやすさ優先で記述してるからセンスは勘弁してくださいw
- 487 名前:nobodyさん mailto:sage [2009/03/24(火) 08:12:11 ID:???]
- >>482
正規表現だけじゃ無理じゃね?
- 488 名前:nobodyさん mailto:sage [2009/03/24(火) 09:59:04 ID:???]
- >>482
正規表現じゃ数学的に不可能。有限状態オートマトンなので閉じられてない 開きカッコの数を高々状態数までしか憶えられないからそれを越えた時点で アウト。 Perlの正規表現みたいに再帰的なパターンが書けるように拡張されてると 別だけどね。
- 489 名前:487 mailto:sage [2009/03/24(火) 10:07:28 ID:???]
- >>482
BoostのXpressiveならby_ref()があるから再帰的に書けないこともないハズ。 でもよーわからん。 Spiritが使えるならそっちのが楽そうじゃね?
- 490 名前:nobodyさん mailto:sage [2009/03/24(火) 10:20:21 ID:???]
- 「高々状態数」の意味がわかりません。
- 491 名前:nobodyさん mailto:sage [2009/03/24(火) 10:38:59 ID:???]
- 数学じゃよくでてくるけどね、「高々」とか「状態数」とか
- 492 名前:nobodyさん mailto:sage [2009/03/24(火) 10:40:15 ID:???]
- >>491
俺は初めて聞いたぞ。 たかだかはよく出て来るけど(例:たかだかn次の〜) 状態数は物理学の用語じゃね?
- 493 名前:nobodyさん mailto:sage [2009/03/24(火) 12:16:31 ID:???]
- お前ら正規表現スレにいて有限状態オートマトンもわからんのか...
いくらなんでもゆとりすぎるだろ
- 494 名前:nobodyさん mailto:sage [2009/03/25(水) 10:08:36 ID:???]
- 文字xが10個以上である場合にマッチさせるのに
x{9}x+ と x{10}x* は共に等価でOKだとおもうが、 一般論で言うとどちらが速い動作になる?
- 495 名前:nobodyさん mailto:sage [2009/03/25(水) 10:43:53 ID:???]
- どっちも同じ動作なんだから同じじゃね
それよりももう少し改良できると思うんだがな
- 496 名前:nobodyさん mailto:sage [2009/03/25(水) 12:38:18 ID:???]
- 実装次第で一般論ではなんともいえないと思われる。
どっちを食わせても全く同じオートマトンに変換してから実行するの でぴったり同じになる実装、なんてのもあるかもしれないし、 逆になぜか+が不得意な実装とか*が不得意な実装とかあるかも しれない。モノによっては{..}が不得意でxを並べたほうがいいと いうことも考えられるな。
- 497 名前:494 mailto:sage [2009/03/25(水) 15:11:33 ID:???]
- >>495-496
なるほど。 ありがとう。。。
- 498 名前:中山 [2009/03/29(日) 09:39:01 ID:MqxV8vA3]
- PHP 正規表現について
$str = 'test1?test2/test3;test4'; この文字の test1 test2 test3 test4 を取り出すにはどうしたらよいでしょうか? この価を data1=test1&data2=test2&data3=test3&data4=test4 と変換したいです preg_replaceを使っています $str = preg_replace("・^([a-zA-Z0-9]+\?+[a-zA-Z0-9]+)\/+[a-zA-Z0-9];+[a-zA-Z0-9)$・","data1=$1&data2=$2&data3=$3&data4=$4",$str)); これではダメみたいです
- 499 名前:nobodyさん mailto:sage [2009/03/29(日) 09:49:02 ID:???]
- どーゆークエリだそりゃ
- 500 名前:nobodyさん mailto:sage [2009/03/29(日) 09:54:22 ID:???]
- $str = 'test1?test2/test3;test4';
この内容がどういうパターンで変動し得るかがわからん 書かれている正規表現見てみると ? / ; の順に区切り文字があることは固定で決まってる?
- 501 名前:中山 [2009/03/29(日) 19:51:10 ID:MqxV8vA3]
- はい。固定できまってます。
ただし、 test1 などの文字列は半角英数字限定です。
- 502 名前:nobodyさん mailto:sage [2009/03/31(火) 12:09:46 ID:???]
- >>498
data1,data2,data3・・・きめえwww
- 503 名前:nobodyさん mailto:sage [2009/04/14(火) 19:16:36 ID:???]
- 以下のような文字列を置換ですべて削除したいのですが
どうかけばいいのでしょうか onMouseOver="refPopUp(1,event)" onMouseOut="hidePop()" onMouseOver="refPopUp(23,event)" onMouseOut="hidePop()" onMouseOver="refPopUp(345,event)" onMouseOut="hidePop()" ↓ 3行すべて削除 試した正規表現 onMouseOver="refPopUp(\d+{1,3}.,event)" onMouseOut="hidePop()"
- 504 名前:nobodyさん mailto:sage [2009/04/14(火) 19:24:30 ID:???]
- 3}.,の.ってなによ
- 505 名前:nobodyさん mailto:sage [2009/04/14(火) 19:31:15 ID:???]
- >>504
すまんこ 一応自力解決しました。さくらエディタの正規表現オンで動作確認 onMouseOver="refPopUp\(\d{1,3},event\)" onMouseOut="hidePop\(\)"
- 506 名前:nobodyさん mailto:sage [2009/04/14(火) 20:09:33 ID:???]
- 下記の2文にあるfontタグを消したいです。
正規表現を用いた1度の置換で消せますか? <dd><font style="font-size:;color:;"> テスト <br> テスト </font><br><br></dd> <dd><font style="font-size:;color:;"> テスト2 <br> テスト2 </font><br><br></dd> 考え方として <dd><font style="font-size:;color:;">がある行のうち</font>を削除し、そのあと<font style="font-size:;color:;">を削除 これで行けそうかと思ったのですが、●●がある行のうち○○を削除、という正規表現がわかりませんでした・・・
- 507 名前:nobodyさん mailto:sage [2009/04/16(木) 23:48:40 ID:???]
- >>506
(.*)<font style="font-size:;color:;">(.*)<\/font>(.*) $1$2$3 とすればいいんじゃない。 どこの正規表現を使うかによりできないかもしれないけど。 $nはn番目の括弧に該当するから<font style="font-size:;color:;">と</font>が消える。 <font></font>がネスとしているなど複数あったら駄目かもしれないけど。
- 508 名前:nobodyさん mailto:sage [2009/04/17(金) 04:08:26 ID:???]
- >>507
サクラエディタで正常に動作することを確認しました。 ありがとうございます!
- 509 名前:nobodyさん mailto:sage [2009/04/25(土) 21:30:02 ID:???]
- ヽ('A`)ノ ○○表現!
( ) ノω|
- 510 名前:nobodyさん mailto:sage [2009/04/29(水) 05:47:07 ID:???]
- チカンしまくり
- 511 名前:nobodyさん mailto:sage [2009/05/12(火) 06:32:22 ID:???]
- 12?34
12??34 違いが出るときはどんなときか答えなさい
- 512 名前:nobodyさん mailto:sage [2009/05/18(月) 16:49:08 ID:???]
- $txt = aaa(’12165;
のような、固定文字列aaaの後ろに『(’nnnnn;』(nの部分は必ず半角数字で値と文字数は可変。’は全角)となる箇所がうじゃうじゃあり、 この文字列の数字を挟んでいる記号だけを全て削除したいのですが、しっくりくる正規表現が浮かびません 妙案ないでしょうか php5 or 4
- 513 名前:nobodyさん mailto:sage [2009/05/18(月) 22:40:33 ID:???]
- aaaの後ろにうじゃうじゃって
$txt = aaa(’12165; $txt = aaa(’5445; $txt = aba(’13; $txt = aaa(’99999; こうなんか? 結果 = preg_replace('/’(\d+);/', '$1', 入力); 結果 $txt = 12165 $txt = 5445 $txt = aba(’13; $txt = 99999
- 514 名前:nobodyさん [2009/05/21(木) 08:03:14 ID:bdo2M1uu]
- すみません、質問させてください。
曲名のリストを一括置換しようとしています。具体的には"〜 by"が 入る丸括弧だけ四角括弧"[ ]"に置き換えたいのです。 例 This is me (talk) (Composed by Johan) ↓ This is me (talk) [Composed by Johan] どのような書式にすればいいかご教示お願いします。
- 515 名前:nobodyさん mailto:sage [2009/05/21(木) 08:25:36 ID:???]
- 正規表現と一言に言ってもね、正規表現にもいろいろあってね、どの正規表現かで
書き方も全然違ってくるからね、その質問だけじゃなんとも言えないのね。 初心者用のサイトにいってらっしゃいなのね。 図解でみる正規表現入門 funcchan.blog16.fc2.com/
- 516 名前:nobodyさん mailto:sage [2009/05/21(木) 08:34:21 ID:???]
- $s= "This is me (talk) (Composed by Johan)";
$s=~ s/\(([^\)]*\bby\b[^\)]*)\)/[$1]/gi;
- 517 名前:nobodyさん mailto:sage [2009/05/21(木) 09:43:06 ID:???]
- >>515-516
ありがとうございます。 STEPというタグエディタで100曲ほど一括置換しようと 目論んでます。 教えていただいたサイトとスクリプトを手がかりに 現在悪戦苦闘中です。ちょっと頑張ってみます。
- 518 名前:nobodyさん mailto:sage [2009/05/23(土) 22:18:11 ID:???]
- こういうときにこまるわけか
special days(arranged by hor version.) (Composed by Ellic)
- 519 名前:nobodyさん mailto:sage [2009/05/27(水) 00:18:24 ID:???]
- 質問させて下さい。
ABC …LMNO……… ……LMNO…… ………LMNO… XYZ というような文章があったとします。 「LMNO」の前後(「…」)には文字(日本語や英数字)があります。 Perl5互換の正規表現が使えるテキストエディタや、BREGEXP.DLLが使える置換えソフトを使用し、 「ABC」から「XYZ」までにある「LMNO」を「OOOO」に置換えすることは可能でしょうか? 特定の範囲内の文字だけを置換えする正規表現がわからず、検索文字列と置換え文字列の指定で困っています。 どのようにすれば良いのか教えて頂けると助かります。よろしくお願いします。
- 520 名前:nobodyさん mailto:sage [2009/05/27(水) 22:50:49 ID:???]
- s/(ABC.*)LMNO(.*XYZ)/$1OOOO$2/g
ってことか?
- 521 名前:519 mailto:sage [2009/05/29(金) 23:05:57 ID:???]
- >>520
具体的な指定を教えて頂いてありがとうございました。 早速試したのですが置換えできませんでした。 「Speeeeed」という置換えソフトではBREGEXP.DLLも使えるのですが、それでも置換え結果がゼロのままです。 こちらのスレをもう一度読み返してもっと正規表現を勉強したいと思います。
- 522 名前:nobodyさん mailto:sage [2009/06/07(日) 21:54:50 ID:???]
- s/(?>ABC)(.*)LMNO(.*)(?<=XYZ)/${1}0000$2/
これを何回もかけるとか? なんか知らんけどgオプションつけても無駄だったんだよなぁ
- 523 名前:nobodyさん mailto:sage [2009/06/11(木) 09:11:23 ID:???]
- >>521
>>520にsパターン修飾子つけて再帰させるしかねーよ
- 524 名前:nobodyさん mailto:sage [2009/06/12(金) 11:14:20 ID:???]
- sed でも使えばー?
- 525 名前:nobodyさん [2009/06/13(土) 23:07:31 ID:56/XckFT]
- Perlの正規表現で質問させて下さい。
yyyy/mm/entry-basename/index.php ↑はどのように記述すればいいのか、お手数ですがご教授願います<(_ _)>
- 526 名前:nobodyさん mailto:sage [2009/06/14(日) 09:14:31 ID:???]
- 正規表現で表すには前提条件がないと答えられない
yyyy部分が4桁数字の西暦? mm部分が2桁数字の月(ゼロサプレス)? m#^\d{4}/\d\d/entry-basename/index\.php$#
- 527 名前:525 [2009/06/14(日) 17:21:47 ID:Ycy68Wtw]
- >>526さん解凍有り難う御座います。
素人で質問が下手くそで申し訳有りません ↓の場合だと "/diary/archives/yyyy/mm/entry_basename.php" "/^\/diary\/archives\/\d{4}\/\d{2}\/(\w+)\.php/" ↑のように置き換えるみたいなのですが、 同様に↓の場合だと "yyyy/mm/entry-basename/index.php" どのように置き換えるのかが分からなくて、お手数ですがご教授下さい。 分かりにくくて申し訳ないです。
- 528 名前:nobodyさん mailto:sage [2009/06/14(日) 21:15:28 ID:???]
- ちなみにゼロで桁を埋めるのは「ゼロパディング」ね。
> ↑のように置き換えるみたいなのですが、 「置き換える」って、いわゆる正規表現による置換処理の意味じゃなくて 「検索表現に翻訳する」って意味なのか。凄まじく紛らわしい。 さておき…、 で、どの単語が可変部分なのかがさっぱり分かんないんだよね。 "index.php" は固定なの? それと、上の置き換え例では "entry_basename" になっているけど お尋ねの件は "entry-basename" だよね。単なる typo かな? "\w" を使う上では、検索対象文字列の "_" と "-" との違いは本質的だよ。 要するに、質問するにしては不備が多過ぎます。
- 529 名前:525 [2009/06/14(日) 23:33:00 ID:Ycy68Wtw]
- >>525です
「検索表現に翻訳する」という意味です。失礼しました そして"index.php"は固定で、"entry-basename"が正解です。 www.magicvox.net/archive/2005/05261744/ ここのページにあるランキングが利用したいのですが、 「ランキング集計したいファイル名にマッチするよう Perl の正規表現 を修正してください。」 ここの意味が分からなくて困っています。他のサイトなどを見てみると、 当方の個別エントリーパスは"/diary/archives/yyyy/mm/entry_basename.php"なわけですので、 "/^\/diary\/archives\/\d{4}\/\d{2}\/(\w+)\.php/"としました。 とあります。 私の場合、エントリーパスは"yyyy/mm/entry-basename/index.php"です。 これを"/^\/diary\/archives\/\d{4}\/\d{2}\/(\w+)\.php/"のように記述 するにはどうすればいいのでしょうか? 長文失礼しました。
- 530 名前:nobodyさん mailto:sage [2009/06/15(月) 00:03:48 ID:???]
- '/\d{4}\/\d{2}\/(\w+)\/index\.php/'
謎すぎるけど PHP の preg 使って entry_basename を $1 に入れるんだと 思い込んでみた
- 531 名前:nobodyさん mailto:sage [2009/06/15(月) 00:06:02 ID:???]
- で、その "entry-basename" ってのはその文字列そのものではなくて
「ここにいろんな文字列が入ります」っつーダミーなんだろうけど、 どういった文字で構成されるの?
|

|