[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2chのread.cgiへ]
Update time : 07/03 06:01 / Filesize : 179 KB / Number-of Response : 640
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

正規表現道場



1 名前:nobodyさん [2007/01/11(木) 02:40:43 ID:uW7xEbZY]
【正規表現道場の掟】

・言語不問

・質問も大歓迎。使用言語を書くのを忘れずに。

正規表現と関係ない話・質問は他スレへどうぞ。

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" ってのはその文字列そのものではなくて
「ここにいろんな文字列が入ります」っつーダミーなんだろうけど、
どういった文字で構成されるの?

532 名前:nobodyさん mailto:sage [2009/07/05(日) 16:07:10 ID:???]
perlでテキストデータ内の日付部分を、
2009/1/1

2009/01/01
に一行で置換したいのですが。
s|/([0-9][^0-9])|/0$1|gm;
だと、2回同じ処理が必要になってしまいます。
いい方法ありますか?



533 名前:nobodyさん mailto:sage [2009/07/05(日) 16:12:40 ID:???]
splitとsprintf

534 名前:nobodyさん mailto:sage [2009/07/05(日) 17:05:36 ID:???]
>>532
後ろの1文字ってマッチする?
マッチするなら
1 while $str =~ s|/([0-9][^0-9])|/0$1|gm;
でいけるんじゃない

535 名前:nobodyさん mailto:sage [2009/07/05(日) 17:40:16 ID:???]
m はなくてもよさそうに見える

536 名前:nobodyさん mailto:sage [2009/07/05(日) 18:26:28 ID:???]
>>534
できました。ありがとうございます!

>>535
おっしゃる通りでした。


537 名前:nobodyさん mailto:sage [2009/07/05(日) 18:27:53 ID:???]
たぶんgもいらないよ

538 名前:nobodyさん mailto:sage [2009/07/08(水) 01:27:46 ID:???]
$str =~ s{/([0-9])(?![0-9])}{/0$1}g;

539 名前:nobodyさん mailto:sage [2009/07/15(水) 09:40:19 ID:???]
秀丸で、CSSの : までの部分を強調表示したいのですが、
どう表現すればいいのでしょうか。
以下の例だと、font-size:の部分です。

h1 {
font-size: 150% !important;
}

540 名前:nobodyさん mailto:sage [2009/07/15(水) 13:56:52 ID:???]
>>539
CSSに数字って出るんだっけ?
[\-a-za-z0-9]+[ \t]*:

541 名前:nobodyさん mailto:sage [2009/07/15(水) 14:47:39 ID:???]
ありがとうございます。
見やすくなりました!
:first-childや:notのセレクタで誤爆していたので

[\-a-za-z0-9]+[ \t]*:(?!\first|last|not)

としました。

また以下のようなものだと誤爆するみたいですが
これはほとんど使わないので目をつむろうと思いますw

BODY[style="width: 100%; height: 100%;"] {
font-size: 150% !important;
}

542 名前:nobodyさん mailto:sage [2009/07/15(水) 15:14:34 ID:???]
良く考えたらもっと一杯あった
[\-a-za-z0-9]+[ \t]*:(?!first|last|not|hover|focas|active|visited|link|lang|after|before)



543 名前:nobodyさん [2009/07/15(水) 23:25:43 ID:2a7dmfqp]
/(^-^;)/w(^o^)vv(-_-;)vv[^-^](^_^;)/

544 名前:nobodyさん mailto:sage [2009/07/22(水) 16:01:40 ID:???]
すみません質問させてください。
正規表現初心者です。
秀丸で、正規表現を使って文字列の置換をしようとしています。

例)
abcd,efag),

これを最初の[,]だけを[',]に置換したいと思っています。

検索文字列: [^)],
置換文字列: ',
とすると、

abc',efag),

のように文字列の後ろの1文字まで消えてしまいます。
文字列が消えないように、最後尾でない[,]だけを置換するにはどのように指定すればいいでしょうか。
教えてください。

545 名前:nobodyさん mailto:sage [2009/07/24(金) 05:32:15 ID:???]
秀丸でサポートされている正規表現の機能がどれだけのものか分からんからなあ。

候補 1(質問者の方針参考)
検索文字列: ([^)]),
置換文字列: $1',

候補 2
検索文字列: ,(?!$)
置換文字列: ',

無理なら一旦「,\n」を「,」を含まない別の適当な文字列に変換して、
全ての「,」を「',」に変換してから元に戻すとか。

546 名前:nobodyさん mailto:sage [2009/08/01(土) 13:06:24 ID:???]
候補 3
検索文字列: |-^)v!!
置換文字列: (^o^)/~~

547 名前:nobodyさん mailto:sage [2009/09/01(火) 17:17:50 ID:???]
PHP5で、$txtに格納された

<a href="javascript:userid('123456');">テキスト</a>
※「123456」と「テキスト」は変化します

といった並びの文字列からタグをぬいて

123456,テキスト,

とカンマ区切りにしたいのですが、何か良い方法はないでしょうか

548 名前:nobodyさん mailto:sage [2009/09/01(火) 17:51:35 ID:???]
自己解決しました
お騒がせして申し訳ありますん

549 名前:nobodyさん mailto:sage [2009/09/03(木) 10:54:41 ID:???]
>>548はだれ?

550 名前:nobodyさん [2009/09/03(木) 12:19:35 ID:54RqrMPZ]
301でサイト移動をする場合に関数に色々な値があるのをそれぞれリダイレクトさせたい場合は
一挙に書くにはどうすればいいでしょうか?


1つ1つ書くと下記のようなのを1つにしたいです。

Redirect 301 /index.php?a=1 "www.sample.jp/index?a=1"
Redirect 301 /index.php?a=2 "www.sample.jp/index?a=2"
Redirect 301 /index.php?a=3 "www.sample.jp/index?a=3"
 ・
 ・
 ・
Redirect 301 /index.php?a=a1 "www.sample.jp/index?a=a1"
Redirect 301 /index.php?a=b2 "www.sample.jp/index?a=b2"
Redirect 301 /index.php?a=c3 "www.sample.jp/index?a=c3"
 ・
 ・
 ・

551 名前:nobodyさん mailto:sage [2009/09/03(木) 12:27:59 ID:???]
>>550
誘導元で礼も無しとか失礼な人だな

552 名前:nobodyさん [2009/09/03(木) 12:47:58 ID:54RqrMPZ]
率直に言って「スレ違い」って程のことか?
と思ったので礼などは書かなかった。

どっちかというとこっちの方が適切とは思うが、
【.htaccessファイル(「分散設定ファイル」)の書き方・使い方などに関するスレです。 】
って説明のスレに書いても別に間違ってないと思う。



553 名前:nobodyさん mailto:sage [2009/09/03(木) 15:52:56 ID:???]
>>550
スレ違い。

【Apache】mod_rewriteについて語るスレ
pc11.2ch.net/test/read.cgi/php/1023791370/


個人的には礼とかどうでもいいと思うけど、
マルチ質問扱いされて厄介なことになる可能性があるので、
「向こうで質問し直します」とかひとこと言っておいた方が無難とは思う。

あと、ドメインの例示に使えるのは "example.jp" ね。

554 名前:nobodyさん mailto:sage [2009/09/13(日) 17:57:11 ID:???]
PHPでPerl互換のpreg_replace関数を使った置換を行おうとしているのですが、
やりたいことがうまく実現できません。

やりたいことは、

・<tagA>という文字列と</tagA>のあいだに<tagInsert>という文字列を挿入したい
・ただし、<tagA>の中に<tagB>という文字列がある場合は、その<tagB>の下に挿入したい


<失敗した正規表現>
$new_str = preg_replace("/<tagA(.*?)>(.*?)(<(?!tagB).)*/", '<tagA\\1>\\2<tagInsert>\\3', $str);

<実現したい例>
<tagA>
<tagB>
<tagB>
<tagC>
</tagA>

↓置換実行
<tagA>
<tagB>
<tagB>
<tagInsert>
<tagC>
</tagA>

555 名前:nobodyさん [2009/09/27(日) 12:15:08 ID:???]
 /身長:(\d+)\n体重:(\d+)/
という正規表現に対し、例えば
 "身長:175\n体重:67"
という文字列がきたら
 "身長:<font color="red">175</font>\n体重:<font color="blue">67</font>"
のようにHTMLタグを追加したい。

ただし
 "身長:100\n体重:100"
のように身長と体重が同じ場合も身長は赤、体重は青にしたい。

もっと欲をいえば正規表現は身長・体重だけでなく
 /年齢:(\d+)\n好きな食べ物:(\S+)/
のように可変にしたい。


556 名前:nobodyさん mailto:sage [2009/09/27(日) 13:11:58 ID:???]
そうですか

557 名前:555 [2009/09/27(日) 15:20:08 ID:???]
どうやればいいか知恵を貸してください

558 名前:nobodyさん mailto:sage [2009/09/27(日) 16:41:20 ID:???]
環境は?

559 名前:nobodyさん [2009/09/27(日) 16:49:26 ID:???]
perlでもrubyでも
できるだけトリッキーでなくて普通の正規表現のパターンマッチと置換でできる範囲で

560 名前:nobodyさん mailto:sage [2009/09/27(日) 23:10:15 ID:???]
絶対正規表現だけで書かなきゃだめなの?
普通に関数作る方が現実的だと思うけど

561 名前:nobodyさん mailto:sage [2009/09/28(月) 01:47:40 ID:???]
if使って分岐させれば

562 名前:nobodyさん mailto:sage [2009/09/28(月) 08:53:02 ID:???]
正規表現をかじったけどちゃんと理解するにいたってない人は
正規表現でやるとかえって面倒な事までさせようとしていらない
苦労をする傾向があるね。理解しちゃえば使った方がいいかどうか
判断つくようになるんだが。



563 名前:nobodyさん mailto:sage [2009/09/28(月) 10:18:45 ID:???]
>>555
こんなのとか?

html = str.sub(/(.+?)(:)(\d+)\n(.+?)(:)(\S+)/) {
"#{$1}#{$2}<font color=\"red\">#{$3}</font>\n#{$4}#{$5}<font color=\"blue\">#{$6}</font>"
}

564 名前:nobodyさん mailto:sage [2009/10/06(火) 22:32:03 ID:???]
phpのpreg_matchなのですが
文字列の中のURLからホストを取得するのは解るのですが
ホスト名とその後に続くディレクトリ名を取得する方法を教えて下さい。

$url = "hogehoge.com/hoge/index.php";

これならば
hogehoge.com/hogeの部分です。

お願いいたします。



565 名前:nobodyさん [2009/10/13(火) 11:08:03 ID:8X+N74J6]
phpで、いくつか特定の拡張子を持つファイルをマッチさせたいのですが、
最後を意味する$は下記のように最終的に1つでよいですか

if (preg_match("/\.html|\.php|\.txt$/",$value)) {
$chk = 1;
}

それともこのように全部に$が必要ですか?

if (preg_match("/\.html$|\.php$|\.txt$/",$value)) {
$chk = 1;
}

566 名前:nobodyさん mailto:sage [2009/10/13(火) 11:28:58 ID:???]
>>564
parse_url使うか"/(.*)\//"

>>565
やってみればわかることだけど当然全部に必要
だから\.(html|php|txt)$みたいに括弧でくくるのが常套だけどマッチした値を取得する必要ないなら
\.(?:html|php|txt)$と書いて少し軽くできる

567 名前:565 [2009/10/13(火) 12:34:51 ID:8X+N74J6]
>>566
ありがとうございました( ^ω^)

568 名前:nobodyさん mailto:sage [2009/10/14(水) 08:58:15 ID:???]
perl で,
「<と>で囲まれた文字列内の abc を def に全て置換する」
というのは正規表現でどう書けばよいでしょうか。

マッチだけならば
"<asaabcasalaabca>" =~ /\<(.*?)(abc(.*?))*?\>/
のようにしてマッチさせられるのですが,繰り返しがあるので後方参照で取得できません。

569 名前:nobodyさん mailto:sage [2009/10/14(水) 09:18:20 ID:???]
>>568
せっかくperlでプログラム書けるんだから、

1. 「<」と「>」に囲まれた文字列を取り出す
2. 1で取り出した文字列のabcをdefに置換
3. 2の結果を「<」「>」で挟む

とやれば難しいことは何もない。

570 名前:568 [2009/10/14(水) 10:26:28 ID:6OWMkMrw]
>>569
いや,確かにおっしゃるとおりなのですが,
Perl互換の正規表現を採用しているエディタで文章を打っているときに,
いちいち使い捨てのPerlスクリプトを作るのが面倒で,
せっかくエディタに内蔵されている正規表現置換機能で置換できれば便利なのにな……と思った次第です。

571 名前:nobodyさん mailto:sage [2009/10/14(水) 10:46:05 ID:???]
そりゃそのエディタの説明書に書いてあるだろ

572 名前:nobodyさん mailto:sage [2009/10/14(水) 16:45:59 ID:???]
「< と > で囲まれた文字列内のある一つの abc を def に置換する」を、
そのエディタのキーボードマクロ機能で繰り返し適用すればよくね?



573 名前:nobodyさん mailto:sage [2009/10/14(水) 17:59:48 ID:???]
いや、そのエディタに正規表現での置換機能もあるだろ、普通

574 名前:nobodyさん mailto:sage [2009/10/14(水) 18:10:49 ID:???]
置換というか補完じゃね?

575 名前:572 mailto:sage [2009/10/14(水) 18:34:24 ID:???]
>>573
エディタの置換機能だと複雑なことができない (この場合 < と > の間を繰り返し置換)
からどうすればいいの?っていう質問だと思ったんだが、違うのかな?

どのエディタ使ってるとか晒してくれるともっと的確に答えれる香具師がいそうだが。

576 名前:568 mailto:sage [2009/10/14(水) 23:09:15 ID:???]
>>571-574
いえ,ですから,エディタ(Mac OS X の Jedit X です)に正規表現置換機能が備わっていることは分かっています。
その正規表現の書き方を知りたいのです。

「< と > の間の繰り返し置換」は正規表現では実現不可能,ということであれば,
やむを得ずスクリプトを組みます(Perl あるいは Jedit X のマクロ言語である AppleScript)が,
可能であれば正規表現置換で実現したいのです。
やはりエディタウィンドウ内で完結するのは手軽ですので。

先読み・後読みや再帰を利用した超絶技巧的正規表現でも構いません。アイデアを求めています。


577 名前:nobodyさん mailto:sage [2009/10/15(木) 00:24:07 ID:???]
>>568=570=576
テキストエディタの実装する正規表現には方言がある。
ここで尋ねても埒が明かない可能性が大なので、新Mac板の専用スレッドに引っ越すことを推奨。

Mac用テキストエディタ Jedit X / 1.0〜4.0
pc11.2ch.net/test/read.cgi/mac/1248500724/

578 名前:nobodyさん mailto:sage [2009/10/15(木) 13:12:35 ID:???]
>>576
Perlでしてみた。
そのエディタは後方参照はできるんかな?

my $str = "<asaabcasalaabca>";
print $str, "\n";

$str =~ s/((?:<|\G).*?)abc(?=.*?>)/\1def/g;

print $str, "\n";

579 名前:578 mailto:sage [2009/10/15(木) 13:19:37 ID:???]
>>568のケースだけなら大丈夫だけど、汎用的には不具合がありそうなので取り消し

580 名前:578 mailto:sage [2009/10/15(木) 13:37:10 ID:???]
試行錯誤した結果、以下でいけそうな感じだけど、どうだろう?

$str =~ s/((?:<|\G)[^<>]*?)abc(?=[^<>]*>)/\1def/g;


581 名前:nobodyさん mailto:sage [2009/10/15(木) 13:51:05 ID:???]
utf-8の文字コード内にない文字を探すにはどんな感じにすればいいんでしょうか?
javascriptです。


582 名前:nobodyさん mailto:sage [2009/10/15(木) 20:38:57 ID:???]
>>568
Perlだったら。
s/<(.*?)>/(my $s = $1) =~ s{abc}{def}g; "<$s>"/ges;

エディタのマクロでやるのがいいかなと思うけど、ちょっと面倒。



583 名前:nobodyさん [2009/10/19(月) 23:25:42 ID:/Zspq1xO]
PHPでとあるファイルを読み込んで、読み込んだファイルの中に下記の記述
があれば正規表現(preg_replace等)で空白に置き換えたいと考えています。
正規表現で正規表現を消す記述の仕方がわかりませんorz
どのような正規表現を記載すればよいでしょうか。
すみませんがお分かりになられる方が居られましたらご教授よろしくお願いいたします。


↓↓↓消したい記述その1↓↓↓
if ( /^(To|Cc): admin@admin\.com$/:h || /^(To|Cc): .*\<admin@admin\.com\>/:h )
{
cc \"| /usr/bin/nextbb -c ISO-2022-JP -s 'xxxxx' -A 'From:yyyyy <admin@admin.com>' -t
/home/sendmail -t\"
}


↓↓↓消したい記述その2↓↓↓
/^[a-zA-Z0-9\-\.\/\[\]\(\)\{\}\|@`:<>,!?\"'#\$%&*+;\\=^_~ ]*?$/"




584 名前:nobodyさん mailto:sage [2009/10/19(月) 23:36:46 ID:???]
Linuxコマンドが入力されるインプットボックスの入力チェック処理を
正規表現でやりたいのですが、どのようなチェックを行えばいいでしょうか?

585 名前:nobodyさん mailto:sage [2009/10/20(火) 09:19:58 ID:???]
それはキミがどのような入力を許可したいかがわからないから答えようがない

586 名前:nobodyさん mailto:sage [2009/10/23(金) 15:06:47 ID:???]
それを聞いているんじゃないのか

587 名前:nobodyさん mailto:sage [2009/10/23(金) 17:07:26 ID:???]
Linuxコマンドとか、インプットボックスって何?

588 名前:nobodyさん mailto:sage [2009/10/24(土) 13:30:39 ID:???]
<input>で何か入れてsubmitすると、それが実行されるのか?
なんか巧妙にうまくごまかして危険なコマンド実行されそうだな。

正直俺の知識では知らん。
どんなコマンドも受け付けたくないな。
そもそもコマンドによってチェック内容は変わるんじゃないの?

589 名前:nobodyさん mailto:sage [2009/10/24(土) 18:23:59 ID:???]
<input name="cmd" type="text" value="rm -rf ." />

590 名前:nobodyさん mailto:sage [2009/10/25(日) 08:12:45 ID:???]
>>584
俺はこれからどのように生きていけばいいでしょうか?
くらいに漠然とした質問だなこりゃ。

構文的に shell が受理可能かどうかなら Perl なら shellwords.pl 使うとかな。

591 名前:nobodyさん mailto:sage [2009/12/09(水) 19:11:48 ID:???]
まだ正規表現が素人なので教えてください。
たとえば以下のように四行の文章があって
それら文章の最初(一番目)の空白文字だけを検索するには
どうすればいいのですか?

The environment of contents industries is so drastically changing,
though Japan has not fully.
taken advantage of the changes to develop.
its presence in the global market.

The とenvironmentの間の空白文字 、though と Japanの間
taken とadvantage の間の空白文などなどです

592 名前:nobodyさん mailto:sage [2009/12/09(水) 21:08:56 ID:???]
Perlで関数の括弧をドンドン入れ子にしていく正規表現書いてるだけと
(\([^()]*(((\([^()]*\)[^()]*))*\)[^()]*)*)*\)
↑これに穴は無いよな!?
どんなに入れ子にしても、エラーはでないかな
初めて作った正規表現なんだが。ご指南、よろ



593 名前:nobodyさん [2009/12/20(日) 20:33:27 ID:fe9ijwb+]
0*(\d+)

これの意味を教えてください

()の中はわかるのですが前がよくわかりません

594 名前:nobodyさん mailto:sage [2009/12/20(日) 20:38:26 ID:???]
数字の並びから先頭の0を取り除いてる

595 名前:nobodyさん [2009/12/20(日) 20:44:43 ID:fe9ijwb+]
なるほど
00200 とかの前の0を無視して検索できるという感じですか

596 名前:nobodyさん mailto:sage [2009/12/21(月) 08:18:48 ID:???]
>> 0*(\d+)
0が0個以上並んだ後に、0〜9が1個以上並ぶ。

597 名前:nobodyさん mailto:sage [2009/12/21(月) 20:42:38 ID:???]
>>592
見てないけど無理
(??{})あたり使えばいける

598 名前:nobodyさん [2009/12/23(水) 22:25:52 ID:Hajqsr0G]
HTMLタグの <ul> <li> について、入れ子構造になっていた場合も考慮しつつ Pukiwiki等の記法に変換しようと考えています

<ul>
  <li>1行目@1段目
  <li>2行目@1段目
  <ul>
    <li>3行目@2段目
    <li>4行目@2段目
  </ul>
  <li>5行目@1段目
</ul>

これを

- 1行目@1段目
- 2行目@1段目
-- 3行目@2段目
-- 4行目@2段目
- 5行目@1段目

こんな感じにしようと四苦八苦しているのですがどうにも難しく…
ヒントだけでも良いのでアドバイスをお願いします。

今は、<ul>が存在する限り
<ul>( <ul>以外 )<\/ul> を抜き出して
その中を /<li>(.*?)<\/li>/s で置き換えて、抜き出し元と差し替えて
最初に見つかった<ul>(.*?)<\/ul>について <ul> と </ul>を削除、と考えていますが
最初の <ul>以外 の時点で既につまづいている始末です。

599 名前:nobodyさん mailto:sage [2009/12/23(水) 23:13:19 ID:???]
$head= '';
$s=~ s/(<ul>)\s*|(<\/ul>)\s*|<li>(.*)(?:<\/li>)?\s*/$1?scalar($head.='-',''):$2?scalar(($head=substr($head,1)),''):"$head $3\n"/gei;
print $s;

600 名前:nobodyさん [2009/12/29(火) 00:08:08 ID:F3P1tBWB]
文字列の中にある¥を除去したかったのですが、preg_replace('/¥/')や
preg_replace('/¥¥/')では削除できなかったのですが、preg_replace('/¥¥¥/')だと削除できました・・・
これはなぜでしょうか。
¥は次に有る文字をエスケープするわけですから、preg_replace('/¥¥/')でいけそうな気がするのですが。。。
正規表現初心者につき、低レベルですがご教授よろしくお願いいたします。
(上記は、あえて半角ではなく、全角の¥で説明しています。)



601 名前:nobodyさん mailto:sage [2009/12/29(火) 12:06:00 ID:???]
やりたいこと自体はstr_replaceでできるだろうけどphpの正規表現がなんかおかしいな。
perlならそれで通るはずだけど。

602 名前:nobodyさん mailto:sage [2009/12/29(火) 12:38:00 ID:???]
文字列としてのエスケープと正規表現としてのエスケープは別。
'/\\/' は /\/ '/\\\/' は  /\\/ '/\\\\/' も /\\/  





603 名前:600 [2009/12/29(火) 22:52:30 ID:F3P1tBWB]
>>601-602
なるほど!!
そういうことでしたか。
ありがとうございます!

604 名前:nobodyさん mailto:sage [2009/12/30(水) 09:01:55 ID:???]
ああそうか、phpだとシングルクオートで囲んでも\はエスケープに解釈されるのか。

605 名前:nobodyさん mailto:sage [2010/01/24(日) 19:36:14 ID:???]
<a href="test.php?id=0001">あいうえお</a>
<div class="id">0001</div>
<div class="time">20100101010101</div>
<div class="name">なまえ</div>
<div class="body">コメント</div>

上記のタグがあったとして、
preg_match_all("/<a href=\"test.php\?id=0001\">(.*)/<\/div>\" style=\"display: none;\">/", $hoge, $data);
のように書くと、指定したIDのaタグ内の文字がとれるのですが、その下の<div class="id">から<div class="body">の後の</div>までのタグ、
もしくはそのタグ内の文字列を抽出したいのですがうまくいきません。
それぞれのタグは1行でつながってるものとして、複数タグの範囲内を取るのは可能なのでしょうか?



606 名前:nobodyさん mailto:sage [2010/01/24(日) 20:12:18 ID:???]
複数ならpreg_match_all()使うけど一つならpreg_match()で以下のように

preg_match('/\bid=(\d+)[^>]+>([^<]*)<\/a>.*?"id">\1<.*?"time">(\d+)<.*?"name">([^<]*)<.*?"body">([^<]*)</is', $s, $match);

607 名前:nobodyさん mailto:sage [2010/01/24(日) 21:01:02 ID:???]
有難うございます。
IDが0001以外のコメントもひろっちゃっていますが、かなり希望するのに近づいてきました。

もう少し細かく書くべきでしたが、複数のIDがあり、同じIDでのコメントも複数あった場合です。
上記のタグが一つのセットとして、いくつかある中の
<a href="test.php?id=0001">あいうえお</a>のタグとコメント部分をまとめて表示させたいと思っています。
id=の部分を改変して直接0001を指定したらだめだった・・・

608 名前:nobodyさん mailto:sage [2010/01/25(月) 01:28:52 ID:???]
試行錯誤したらなんとか希望通りのものができました。
正規表現だけに囚われててプログラムがよろしくなかった…

609 名前:nobodyさん mailto:sage [2010/02/03(水) 12:34:08 ID:???]
先生質問です
Rewriteで動的URLを静的URLにしたいのです

やりたいことは6つのクエリを書き換えたいのですが
6つのうち1つのとき、2つのとき、・・・6つのときというように組み合わせがかなりの数になってしまうと思うのですが

順列で 6P1 + 6P2 + 6P3 + 6P4 + 6P5 + 6P6 と考えてよいのでしょうか?

6つも書き換えなんてやっぱ無理でしょうか?

610 名前:nobodyさん mailto:sage [2010/02/03(水) 13:22:42 ID:???]
ちょw

611 名前:nobodyさん mailto:sage [2010/03/02(火) 21:59:18 ID:???]
 

612 名前:nobodyさん mailto:sage [2010/03/02(火) 22:11:34 ID:???]
test



613 名前:nobodyさん mailto:sage [2010/03/08(月) 15:33:08 ID:???]
MySQLダンプ内の

/*------------------ここから--------------------*/
DROP TABLE IF EXISTS `table100`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `table100` (
`code1` varchar(5) default NULL,
`zip1` varchar(7) default NULL,
`address1` varchar(250) default NULL,
`address2` varchar(250) default NULL,
`div_1` varchar(1) default NULL,
`div_2` varchar(1) default NULL,
`import_date` timestamp NULL default NULL,
`rec_key1` int(10) unsigned NOT NULL auto_increment,
PRIMARY KEY (`rec_key1`)
) ENGINE=InnoDB AUTO_INCREMENT=121471 DEFAULT CHARSET=eucjpms;
/*!40101 SET character_set_client = @saved_cs_client */;
/*------------------ここまで--------------------*/

`table100` → `TABLE100`
`code1` → `CODE1`
など逆クォートで囲まれた小文字→大文字変換を一括で行いたいです。。
できればlinux コマンドライン、perl などでお願いします。。


614 名前:nobodyさん mailto:sage [2010/03/08(月) 18:01:54 ID:???]
たぶんs/`(\w+)`/`\U$1`/g






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<179KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef