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


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

正規表現 part4



1 名前:デフォルトの名無しさん [2007/08/02(木) 13:53:20 ]
正規表現(Regular Expression)スレです。

質問する場合は実装言語や処理系ソフトウェア名を示しておくと話が早いです。

331 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 12:24:04 ]
/image/[00-31]_[00-1f].jpg
     ↑00〜31↑00〜1f(16進数)
正規表現でこのように設定したいのですがうまくいきません。

/image/(00_00、01_01・・・10_0a・・・31_1f)
こういったものを書きたいのですが可能でしょうか?

332 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 12:29:21 ]
>>331
[] は一文字にしかマッチしないのでー。
正規表現はふつうは数値の範囲は指定できないのでー。

([0-2][0-9a-f]|30|31)_[01][0-9a-f]\.jpg


333 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 13:19:37 ]
>>331
もしかして、 10進部分と 16進部分を対応させたいと思ってる?
それだと正規表現だけでは簡単に書けないと思う。

334 名前:デフォルトの名無しさん [2008/01/05(土) 11:31:41 ]
日本語の話しになってしまいますが、質問させてください。

>検索対象に正規表現が一致した場合

>検索対象が正規表現に一致した場合
どっちが正しいのでしょう?

前者が正しいような気がするのですが、よく判らなくなってきました

335 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 12:04:31 ]
一致というよりマッチといいましょう。

336 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 17:24:34 ]
そういえばどっちも言うような気がする。
文脈によるというかどっちを軸に語るかによるんじゃないかな。

337 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 17:36:47 ]
厳密に言うと受理だろうが、気にしすぎだとも思う

338 名前:デフォルトの名無しさん [2008/01/05(土) 21:41:39 ]
プログラムの 「前」 ってどっちですか?

339 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 21:42:19 ]
つまらんコピペだな



340 名前:デフォルトの名無しさん [2008/01/05(土) 21:45:36 ]
じゃね? => ぢゃね?

341 名前:デフォルトの名無しさん [2008/01/06(日) 14:50:28 ]
ここのFAQの中の手作業でNFAを作成ってページなんだけど
capslockabcjp.kitunebi.com/handmade.html
/***/にマッチしないきがするけど。

342 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 15:05:50 ]
だからなんだよ。

343 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 15:29:12 ]



344 名前:334 mailto:sage [2008/01/06(日) 15:59:55 ]
レス有難うございます。やっぱり気にし過ぎですかね。
気にしない事にします。

345 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 23:17:00 ]
if (ch == '/') st = 1;
else if (ch == '*') st = 4; // 追加
図のほうに
S4->S4 [label="*"];
だね

346 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 00:05:54 ]
>検索対象(の文字列)が正規表現(で表されたパターン)にマッチした場合
パターンは固定だから、俺はこっちがしっくりくる

347 名前:デフォルトの名無しさん [2008/01/10(木) 03:38:22 ]
"one two three four"
"one three two four"
にしたいのです。正規表現でスワップ(位置交換)したいんですが
ググってもあんまりなかったです。

一応、java.util.regex.*; 使ってます。

348 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 03:41:41 ]
"one two three four five" 
"one four three two five" 
1 2 3 4 5
1 4 3 2 5
でした。

349 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 16:36:35 ]
Pattern pattern = Pattern.compile("^(.*?)\\s+(.*?)\\s+(.*?)\\s+(.*?)\\s+(.*?)$");
Matcher matcher = pattern.matcher("one two three four five");
String str = matcher.replaceFirst("$1 $4 $3 $2 $5");

とりあえず



350 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 17:42:18 ]
>>349
おお、ありがとうございます。
java.util.regex.Pattern; のAPI見ても \1 は載っていても、$1 は載ってなかったんですができるんですね。

ところでAPI(java, perl, ruby, js)見ても良く分かり辛いのですが、\n, $n のnはいくつまで参照できるんでしょうか。

nは10進表記みたいですけど、
\0
- 1から9までは dec
\1 ... \9
- dec
\10, \11 ... \21
- oct
\010, \011 ... \025

\0nnn とすれば自動で8進表記
\nnnn とすれば自動で10進表記

参照は \1 <=> $1

API(java)ではこういう感じみたいなんですけど実際はどうなんでしょうか。

351 名前:デフォルトの名無しさん [2008/01/10(木) 21:27:54 ]
"\1" じゃなく、"\\1" じゃないのかな。

java コンパイル ⇒ 正規表現コンパイル
つまり2回コンパイルされる事に注意。
ここらへんの理屈がわかってないとツライよ。

352 名前:349 mailto:sage [2008/01/11(金) 00:55:38 ]
>>350
とりあえず最大数は気にしなくていい、[\$]1000とかでもいけるように見える
Petternクラスでは0始まりは8進数になるけど、Matcherクラスでは10進のまま
PetternのescapeとMatcherのappendReplacementあたりのソースを見るといい
うまくまとめられてないけど、2ch止まるらしいので今のうちに書いとく

353 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 17:24:33 ]
APIソース見てるんですか!
そこまで頑張らなくてもどこかにあるJavaのフォーラムで質問した方がいいんじゃないですか?


354 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 17:39:56 ]
質問者よりも回答者の方が問題解決に躍起になってるスレ。

355 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 20:10:07 ]
sedを使ってC言語のコメントを全て削除するにはどうやればいいんですか?
コメントが1行に収まっているなら簡単なんだけど、複数行にまたがる場合にどうすればいいかわからない

356 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 20:22:05 ]
>>355
パターンスペースとホールドスペースを駆使すればできなくはないが、お勧めできない。
awkかperl、或いは最近のスクリプト言語を使う方がいい。

357 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 08:24:05 ]
俺には無理ぽ
---------------------------------------
# decom.sed
/\/\*/ {
:loop
/\*\// { b break }
N
b loop
:break
s/\n/ /g
s/\/\*.*\*\///g
}
---------------------------------------

358 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 08:30:01 ]
ttp://main.rtfiber.com.tw/~changyj/sed/html/p.20010226b.html
ちょろっと探したらすぐ見つかったしorz

359 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 09:21:03 ]
でも>358だと文字列中の/*にも反応しちゃうんだよね。
本格的に使うのは、ちょっと無理。



360 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 09:51:59 ]
プリプロセッサ指令をプリプロセスで消されないよう加工
 ↓
プリプロセッサにかける
 ↓
加工したプリプロセッサ指令を元に戻す

361 名前:デフォルトの名無しさん [2008/01/14(月) 12:03:15 ]
正規表現のエスケープしなくてもいい記号がわからないので、
とにかく記号という記号はエスケープしていて結構カオスになっているのですが、
エスケープしなくてもいい記号一覧とかどっかにありませんか?
!"#$%&'()-=^~\|@`[{;+:*]},<.>/?_
これが
\!\"\#\$\%\&\'\(\)\-\=\^\~\\\|\@\`\[\{\;\+\:\*\]\}\,\<\.\>\/\?\_
こんな感じに・・・

362 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 12:22:13 ]
半角スペースって普通に半角スペースをいれるか\x20とかくかどっちがいいんですか?

363 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 12:23:19 ]
普通に半角スペースを

364 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 12:40:39 ]
>>363
レスありがとう。
普通に半角スペース使うことにしますね。

365 名前:361 mailto:sage [2008/01/14(月) 15:43:29 ]
完全かどうかはわかりませんがWikipediaにのってました。
というわけで自己解決しました。

366 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 18:31:15 ]
>362

\s


367 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 18:36:27 ]
>>366
秀丸じゃ使えないんだよな

368 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 18:37:44 ]
>>366
つーか、それホワイトスペース一般じゃないか?

369 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 18:55:23 ]
ホワイトベースに見えた



370 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 19:43:17 ]
セイラさんにハァハァしすぎw

371 名前:デフォルトの名無しさん [2008/01/14(月) 20:00:29 ]
\s は改行にもマッチすることがあるから
半角スペースの代わりにはならないよ

372 名前:デフォルトの名無しさん [2008/01/14(月) 22:22:22 ]
特定の英単語が含まれているかをチェックする正規表現を教えてください。
This is a pen.
に対してhisをチェックした場合に引っかからないのが正しいです。

英単語の定義は[A-Za-z]{3,}とする予定で、単語の間はカンマやハイフン、セミコロンなどもあり。
前後が[^A-Za-z]だけだと行頭行末がダメ。。。


373 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 22:23:48 ]
>>372
\b

374 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 22:28:09 ]
非語境界ってやつだな。

375 名前:372 mailto:sage [2008/01/14(月) 22:28:22 ]
>>373
ありがとう。知らんかった。首吊ってくるわ。。。

376 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 22:41:54 ]
イ`

377 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 22:44:30 ]
\sはタブにもマッチするな
まあ既に>>368が言ってるけど

378 名前:デフォルトの名無しさん [2008/01/17(木) 16:41:25 ]
こんにちは。質問です。

@book{sagan:1954,
author = {Fran\c{c}ois Sagan},
title = {Bonjour Tristesse}
}

こんな感じの文字列(BibTeX)を取り込んでハッシュにするためには
どのような正規表現を用いればよいでしょうか。

ポイントは
 1. コンマで分割する。
 2. {}の中のコンマは無視する。
というあたりだと思うのですが、特に括弧の入れ子をどう処理するかで困っています。

使用言語はRubyです。よろしくお願いします。

379 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 19:22:45 ]
正規表現は再帰をあつかえない。即ち括弧の対応を確かめることが出来ない。
上限をハードコードするなら可能ではあるが、普通にパーサを書いたほうがいいと思う。



380 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 21:31:48 ]
新しいPerlへようこそ

381 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 13:21:50 ]
>>380
新しい Perl でも、正規表現 *だけ* では無理じゃね?

382 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 19:34:46 ]
ソースコードやXMLはネスト構造を持つから正規表現は向かないよな。
Javaとかもソースコードパーサー用の汎用クラスがあるけど、何故か使われなかったり。
BNF法の知識がデベロッパレベルで浸透してないから、無理も無いけど。

383 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 09:57:54 ]
仕用言語はPHP5.2.4です。UTF-8での運用をしております。
テキストの中のURLをリンクしたいのですが、

$pat = "(https?:\/\/[-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#]+)";
$rep = "<a href=\"\\1\" target=\"_blank\">\\1</a>";
$body = ereg_replace($pat, $rep ,$body);

これだと、2ちゃんねるみたく、ttp:から始まったURLの場合リンクできません。
無駄だと思いつつも書き方がわからないので、下記の処理を付け加えましたが、
 <a href="hoge">hoge</a>
↑この部分が何故か文字化けしてしまいます。

$pat2 = "[^h](ttps?:\/\/[-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#]+)";
$rep2 = "<a href=\"h\\1\" target=\"_blank\">\\1</a>";
$body = ereg_replace($pat2, $rep2 ,$body);

スマートに書く方法を教えてください。

384 名前:デフォルトの名無しさん [2008/01/24(木) 10:34:25 ]
すまない
ageさして下さい

385 名前:デフォルトの名無しさん [2008/01/24(木) 10:51:13 ]
>>383
[^h] じゃなくて h? じゃない?

386 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 11:20:57 ]
>>385
dです
ご指摘のように

$pat2 = "h?(ttps?:\/\/[-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#]+)";
$rep2 = "<a href=\"h\\1\" target=\"_blank\">\\1</a>";
$body = ereg_replace($pat2, $rep2 ,$body);

こうすることで動きました
ありがとうございました

387 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 14:34:41 ]
h?っていらなくない?

388 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 14:46:58 ]
http: ってちゃんと書いたときに h が増殖しちゃわない?

389 名前:388 mailto:sage [2008/01/24(木) 14:51:28 ]
スマソ、勘違い。

h? を省くと、 http: ってちゃんと書いたときに、こんなふうに h が出てきちゃう。
h<a href="hoge">ttp://hoge</a>



390 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 21:19:55 ]
全体を括弧でくくってそれをテキストに指定、
内側のh?(~~をリンクに指定すればいいと思う。

391 名前:デフォルトの名無しさん [2008/01/24(木) 21:49:52 ]
$test = '<a href="localhost/">LINK29</a>';
$test = preg_replace('{<[Aa] .+?>LINK([1-9][\\d\\-]*)</[Aa]>}' ,page_href('$1') ,$text);

上記の正規表現で得た29という数字をpage_hrefという関数に渡したいです。
29という数字は取れているみたいですが、関数内には29という数字が渡ってきておりません。
preg_replace内でどうすれば関数に数字を渡せますか?

ちなみにPHP5系です。

392 名前:デフォルトの名無しさん [2008/01/24(木) 21:52:25 ]
preg_replace内の$textは$testです
すみませんでした

393 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 23:30:33 ]
>>390
kwsk

394 名前:デフォルトの名無しさん [2008/01/24(木) 23:58:17 ]
>>393
$pat2 = "(h?(ttps?:\/\/[-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#]+))";
$rep2 = "<a href=\"h\\2\" target=\"_blank\">\\1</a>";
$body = ereg_replace($pat2, $rep2 ,$body);

↑こういうことじゃね?

395 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 00:14:49 ]
>>391
そのくらいの正規表現ならPHP使いなら大抵知ってるからPHPスレでいいと思うよ

で、関数に引数を渡すにはその引数を評価してからじゃないと渡せない
というわけでまずは preg_replace() の引数である page_href('$1') を評価する
でもこの時点で preg_replace() は評価されてないので $1 は未定義

preg_match() を使って二つに分けて書くのが普通だろうけど
どうしても preg_replace() ひとつで済ませたい場合は e 修飾子を使ってこう書く

$test = '<a href="localhost/">LINK29</a>';
print preg_replace('{<[Aa] .+?>LINK([1-9][\\d\\-]*)</[Aa]>}e', 'page_href($1)', $test);

ただこういう謎コード書いて冷たい目で見られても知らない

396 名前:デフォルトの名無しさん [2008/01/27(日) 10:16:29 ]
BREGEXPのC言語のラッパーライブラリがあったら教えてください。
BREGEXPでなくても他に使いやすいライブラリがあれば教えてください。

397 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 11:14:06 ]
C 言語なら PCRE とか鬼車で良いのではないかと。

398 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 12:52:37 ]
>>396
元々Cだしなぁ。ラッパーに何を期待してる?

それはそれとして、素のBREGEXPは古いのでやめておいた方がいい。
いくつかバグも見つかっているようだし。せめてbregonigにすべきかと。

399 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 12:55:52 ]
RE *re = ReCompile("/(\d+)/");
if(ReMatch(re, s)) { printf("%s", re->d1); }
ReFree(re);

これくらい簡単なのは確かに欲しい。



400 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 18:22:16 ]
みんながCのアプリをC++でコンパイル通してくれればfreeもなしで
if (/([0-9]+)/ == str) ...
こうできるけどね。

クラス定義とかしなくていいからさぁ、
C++のランタイムにしてくればモジュール提供する側がラクなんだよなぁ

401 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 19:22:38 ]
世の中の全てプログラム言語はC++でいいと?

402 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 19:37:07 ]
C99

403 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 14:08:08 ]
a b c
aa bb cc
aaa bbb ccc

これのインデントあわせって正規表現だけでできますか?perlです。

404 名前:デフォルトの名無しさん [2008/01/29(火) 14:41:11 ]
<A HREF="hogehoge.jp/**************">hogehoge.jp/**************</A>
<A HREF="hogehoge.jp/**************">hogehoge.jp/**************</A>
…以下続く

という文字列があるのですが、**************の部分に暗号化された文字(例:=7%be%8e%e4)が50文字くらい並んでいて
毎回文字数や形式が変動してしまいます。

<A HREF=" のほうはいいのですが、 HTML上に表示される文字のほうも暗号文字になってしまうので困っています。

正規表現で、HTML上に表示される文字のほうだけ、「リンク」という文字に変える方法はありますでしょうか?

405 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 15:32:43 ]
>>403
右寄せ?左寄せ?
まあ無理なんじゃない
>>404
pack形式と実行環境書け

406 名前:405 mailto:sage [2008/01/29(火) 15:42:18 ]
>>404の例は「美人」だと思われるが、それでいいのか?
あとhogehogeやめれexampleにしろ

407 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 15:55:11 ]
>>404です

実はプログラミングを知らないので、実行環境はテキストです…
秀丸でできればおkです…

408 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 19:56:06 ]
>>403
正規表現では無理だろう。

幅固定なら awk が楽だが、
最長のに合わせるんだったら perl で普通に
ガシガシ書いてきゃいいんじゃね?

409 名前:デフォルトの名無しさん mailto:age [2008/01/30(水) 00:44:52 ]
perlでweb製作しています。

$txt の中の

href="URL" の中のURLを
http:example.net/test.cgi?url=エンコードしたURL
の形に一括変換したいです。

たとえば
href="search.com/str.cgi?first=1&p=%BA%C7%B9%E2"
href="http:example.net/test.cgi?url=http%3A%2F%2Fsearch.com%2Fstr.cgi?%2Fsearch%3Ffirst%3D1%26p%3D%25BA%25C7%25B9%25E2"
のようにしたいです。

$txt内には複数のhref=""があり、href=""外にもURLがあり、その部分は変換不要です。


$cgi = "http:example.net/test.cgi?url=";
$txt =~ s/(href\=\")([\w\.\~\-\/\?\&\+\=\:\@\%\;\#\%\$]*\")/$1&cgi$2/g;

$2の部分をエンコードすればよさげなのでエンコード法を調べてみましたが↓を↑に組み込み方がわかりません。
どなたか、お教えください。
$str =~ s/([^\w ])/'%' . unpack('H2', $1)/eg;





410 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 01:18:38 ]
use strict;

my $txt = <<TXT;
href="search.com/str.cgi?first=1&p=%BA%C7%B9%E2"
href="search.com/str.cgi?first=1&p=%BA%C7%B9%E2"
TXT

$txt =~ s{(?<=href=").*?(?=")} {
no locale;
sprintf q{http:example.net/test.cgi?url=%s},
do{$_ = $&; s/([^\w ])/'%' . unpack('H2', $1)/eg; tr/ /+/; $_}
}eg;

print $txt;

411 名前:デフォルトの名無しさん mailto:age [2008/01/30(水) 01:26:23 ]
>>410
THANKS

なんか、できそうですが、PERL事態初心者で構文自体は理解できませんorz

412 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 11:34:55 ]
echoが含まれない行の検索って、java正規表現でできますか?

^.(?<!echo)*$ ではできませんでした。

413 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 11:45:01 ]
>>412
すいません。できました。
下の2つともできたのですが、「.」のおく位置で何か違いはあるのでしょうか?

^(.(?!echo))*$
^((?!echo).)*$

414 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 13:56:44 ]
それ上手く動かないだろ

415 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 01:40:06 ]
ふつうは^(?!.*echo)
これでだめなら ^(?!.*echo).*でもいい

>>413
1つ目はダメ。たとえば次のような行:
echo
このeを.で評価したとき、継続の文字はcho。
echoという文字が続いているわけじゃないから、マッチは成功してしまう。
2つ目はうまくいくだろう。

416 名前:デフォルトの名無しさん [2008/02/01(金) 00:31:08 ]
質問です、PHPにおいてファイルパスの正規化をしています。

// テスト文字列、"/test/oame/doe/0"にしたい。
$location = "/test/./oame//doe/abc/../0/";
// 置き換え部分
$location = ereg_replace("//+","/",$location); /* "//" -> "/" */
$location = ereg_replace("/\./","/",$location); /* "/./" -> "/" */
$location = ereg_replace("/.+?/\.\./","/",$location); /* "/___/../" -> "/" */
$location = ereg_replace("/$","",$location); /* 末尾の"/"を削除 */

ereg_replace3番目の、/../の処理がうまくできていません、
$locationが空になります。これはどのように記述したらいいのでしょうか?

417 名前:デフォルトの名無しさん [2008/02/01(金) 00:51:28 ]
$location="/test/./oame//doe/abc/../0/";
$x=$location.split('/');
$location='/'+$x[1]+'/'+$x[3]+'/'+$x[5]+'/'+$x[6]+'/'+$x[8];



418 名前:デフォルトの名無しさん [2008/02/01(金) 01:15:56 ]
phpよく知らんけどこんなとか?

$location = ereg_replace("/[^/]+?/\.\./","/",$location); /* "/___/../" -> "/" */

419 名前:416 [2008/02/01(金) 02:04:34 ]
どうもPHP固有の仕様に関することかもしれないので、
そっちで聞いてみたいと思います。
どうもありがとうございました。



420 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 13:56:31 ]
.(?!xx)* は.*中に「xx」がない、との解釈になるのでしょうか?


よって下記とは異なる、でよろしいでしょうか。
(?!xx).*

421 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 19:08:06 ]
正規表現で遊べないかと考えていたんけど、みさくら語を正規表現で表すとしたらどうやる?

422 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 19:56:32 ]
ぐぐったら出てくるじゃないか
ttp://home.1555.info/misakura.html

とりあえず上のJavaScriptの意味を調べてみては
その過程で正規表現より他に必要なものが見つかるはず

423 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 09:29:34 ]
マッチさせた後どう処理するかの方が肝なので、正規表現だけ考えても仕方ないかと。

424 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 21:45:00 ]
蒲焼《か はやき》
深川《ふか がわ》
↑のような《》に挟まれた半角スペース、全角スペースを指定する正規表現はどう書けばいいか教えて下さい。よろしくお願いします。

425 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 03:36:32 ]
>>424
>>1

426 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 17:50:02 ]
********aaa aa *
****age p * kk **
*aaaa
のようなものの*を行頭から連続している部分だけ-に換えたいんですが
--------aaa aa *
----age p * kk **
-aaaa
こういうような二重絞り込みみたいなものってperlのワンライナーでやる方法が知りたいです
perl -pe '/^[\*]*/ & tr/*/-/'
みたいな感じで条件を合成できそうな気がするんですが

427 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 18:02:31 ]
perl -pe 's/^\**/q{-} x length($&)/e'

428 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 18:46:33 ]
どうもありがとうございました
正規表現だけじゃできないんですね
perlも勉強することにします

429 名前:424 mailto:sage [2008/02/08(金) 19:34:16 ]
ソフトは秀丸使ってます。実装言語とかよくわかりません。



430 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 19:58:15 ]
テンプレのサイトで少しは勉強してきなよ

431 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 20:10:24 ]
やってみって《》とその中までは指定できたけどその先がよくわからんのです。

432 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 20:27:02 ]
[《 》]
↑だと《》も一緒に指定してしまうし、だめだ。

433 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 01:36:18 ]
あきらめてこれで検索したら?
\f《[^《]*\f \f[^》]*》\f
置換するなら"\1置換後文字\3"とかで指定すればいいんだし。

434 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 01:09:08 ]
phpなんですが、たとえば
$a = "aiueo";
$b = "aiu";
と、あるときに
変数$bの中身(aiu)が$aに含まれるかを調べたいんですがどうしたらいいでしょうか。

435 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 01:17:22 ]
strstr

436 名前:434 mailto:sage [2008/02/12(火) 11:16:40 ]
わかりました!ちょっと難しく考えすぎていたようです。
正規表現使う必要ないんですね。
ありがとうございます。

437 名前:デフォルトの名無しさん [2008/02/13(水) 00:28:11 ]
・・・これだ

438 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 15:18:34 ]
phpです。
htmlファイル中の
<p>
test
あああ
いいい
ううう
</p>
を preg_match('/<p>((.|\n)+)<\/p>/', $source, $test); でマッチさせると
$test[0]には全体、[1]には一致した部分が入っていて正しいのですが
[2]に空白も入ってしまっているようです。
Array
(
[0] => <p>
test
あああ
いいい
ううう
</p>
[1] =>
test
あああ
いいい
ううう

[2] =>

)
このようになります。
上手く間にある文字列だけをマッチさせる方法はないでしょうか。

439 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 15:26:34 ]
>>438
二個目のカッコ (.|\n) にマッチした箇所がキャプチャされてるね。
後方参照されないように (?:.|\n) とか。 ?: の意味は自分で調べて。



440 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 15:34:54 ]
素早いレスありがとうございます。調べてみます。

441 名前:デフォルトの名無しさん [2008/02/15(金) 18:54:31 ]
Perl5.6でIPアドレスの範囲と場所をマッチングさせたいと思っています。

192.168.1.* を東京
172.16.0.* 〜 172.16.3.* を大阪

という場合はどのように判定させればいいのでしょうか。
Perl歴3日目なもんで・・・どなたかお力を。

442 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 19:00:38 ]
とりあえず、正規表現でやろうとするのは間違ってますよ。
split /\./ してからごにょごにょするか、
CPANのNetAddr::IPのようなモジュールが使えないか検討してください。

443 名前:デフォルトの名無しさん [2008/02/15(金) 19:04:12 ]
なるほど。分けてから比較するんですね。
方向性が分かっただけでも助かりました。
ありがとうございました。

444 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 20:05:50 ]
そういう場合はサブネットマスク使ったほうが綺麗にかけるぞ

445 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 22:54:30 ]
255.255.252.0とかで切っててもいけるもんなんですか?

446 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 13:40:36 ]
bitでかんがえてみろ

447 名前:デフォルトの名無しさん [2008/02/19(火) 10:54:06 ]
テキストエディタで検索・置換をするのに
特定のワードで始まる行末7文字の指定はどう書けばいいでしょうか?

それとDOSのワイルドカードだと
AA○○.txt
AA××.txt
とあったときren AA*.txt BB*.txtとすれば
BB○○.txt
BB××.txt
となったと思うのですが、正規表現でも同様な事ができますか?
こちらもテキストエディタでの検索・置換です

448 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 15:07:30 ]
PHP正規表現チェッカー
ttp://www.rider-n.sakura.ne.jp/regexp/regexp.php


449 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 17:34:36 ]
>特定のワードで始まる行末7文字の指定
これの意味がわからない、例を出せ例を



450 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 17:36:10 ]
テキストエディタっつってもできることできないこといろいろあるので
具体的なソフト名を出した方が回答が得られやすいと思われ。

451 名前:デフォルトの名無しさん [2008/02/19(火) 17:48:38 ]
コミュニケーション能力が不足しているな。
エディタの使い方とか正規表現とか覚える前に
人間として最低限必要な事を先に覚えたほうがいいんじゃない?

452 名前:447 [2008/02/19(火) 17:55:55 ]
答えられないカスどもは黙っててください
わかる人だけが、質問に答えてくれればいいです
では引き続きよろしくお願いします

453 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 18:07:23 ]
晩飯なににすっかなー

454 名前:デフォルトの名無しさん [2008/02/19(火) 18:37:56 ]
サンマの缶詰が安かったから、これで炊き込みごはん。
米1合を洗ってダイソーで買った105円の土鍋に入れる。
そのままサンマの缶詰1缶まるごとブチ込む。
水加減は、缶詰の水分と合わせて200mlくらいになるように調節。
30分くらい浸して火にかける。
最初は中火より強め。5分くらいで吹いてくるから弱火にして、さらに5分。
(赤子泣いてもフタ取るんじゃないぞ)
炊き上がったら5分むらす。
缶詰はサンマでなくても、鯖とかイカとか赤貝とか、好みのでOK。
味が濃い目の缶詰がいいな。味が薄いときは醤油や砂糖やみりんを加えてから
炊くといいよ。

455 名前:447 [2008/02/19(火) 18:40:47 ]
エディタはJedit X1.11です

例)
あああ〜〜〜1234567
いいい〜〜〜1234567
………
………

〜〜〜は文字数などもバラバラな任意な文字列(全角含む)

行頭『あああ』で始まる行の、行末『1234567』を
別の文字列『abcd』等に置換したいのです


456 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 18:43:41 ]
あああ腹へったなー

457 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 20:02:10 ]
(?<=あああ).*(?=.{7}) -> abcd

458 名前:447 [2008/02/19(火) 21:51:39 ]
>>452
おいおい気がついたらとんでもない事勝手に書いてるな〜(苦笑

>>457
ありがとうございます
戻り読みと先読みですか、なるほど!
ですが、これだと『〜〜〜』の部分になってしまいますよね……

459 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 23:38:16 ]
1合炊きの土鍋なんてあるのか
今度ダイソーに行ったら見てみよう



460 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 23:44:48 ]
>>459
中国製の土鍋なんてどんな毒が混ざってるか分からんぞ。

461 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 00:38:19 ]
ニ○リの土鍋以外にでたっけ

462 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 08:47:18 ]
>>452
こういうことすぐ言う人って、昔いじめられてた人なんでしょ?可哀想にね

463 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 11:24:13 ]
めんどくさがりなので俺なら↓でやってしまうな
/^(あああ.*?)(.{7})$/\1abcd/

464 名前:447 [2008/02/21(木) 18:24:17 ]
>>463
ありがとうございます

いろいろ調べながらやってますがダメなようです
もうちょっとがんばってみます

465 名前:デフォルトの名無しさん [2008/02/21(木) 18:30:35 ]
せっかくヒントもらえたんだし、頑張ってもらわんとな

466 名前:デフォルトの名無しさん [2008/02/22(金) 00:06:24 ]
>>396
いまラッパーつくってるよ
ちょっとまてて

467 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 13:22:33 ]
2008-03 発売(予定)
「詳説 正規表現 第3版」 (Jeffrey E.F. Friedl 著 / 長尾高弘 訳)
ISBN 978-4-87311-359-3 定価 5,040円

468 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 16:48:39 ]
おや、和訳出るのね。今回は田和さんじゃないんだ
もったいない気もするがロングテールの人なら鉄板か

469 名前:466 [2008/02/22(金) 21:49:08 ]
できましたよ 使ってみてください サポートはここで
fx10.web.fc2.com/index.html



470 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 03:35:41 ]
>>468
原書では追加はPHP関連とかがあったけど、以前のものからの改訂部分って
ほとんどなかったんだよね。
訳しなおしてるのかなあ?



471 名前:デフォルトの名無しさん [2008/02/23(土) 20:12:38 ]
php4なのですが、
<img src="new.gif" alt="New" width="10">
を正規表現で置換してaltの値だけを表示にすることは出来ませんでしょうか

よろしくお願いします

472 名前:デフォルトの名無しさん [2008/02/23(土) 20:21:04 ]
<img src=\".*?\" alt=\"(.*?)\".*?>
\1
でできたよ

473 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 20:28:49 ]
秀丸で検索するときに文字列Aを含んで且つ文字列Bを含まない行全体を指定したいのですが、
(含む行)       ^.*文字列A.*\n
(含まれない行)   ^((?!文字列B).)*\n
で個別にはわかるんですがこの2つを合わせてて検索したいのですがどう書けばいいのでしょうか?

474 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 23:21:55 ]
(^.*文字列A.*\n|^((?!文字列B).)*\n)

475 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 23:22:43 ]
あ、間違えたわ

476 名前:デフォルトの名無しさん [2008/03/06(木) 01:07:25 ]
  dll
| ^
  dll

477 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 08:06:30 ]
微妙にイケメソがいるな

478 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 08:12:32 ]


479 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 08:35:28 ]
(6
  ’)
(6




480 名前:デフォルトの名無しさん [2008/03/07(金) 17:01:30 ]
質問です。
小数点以下の右端の0を全部取り除きたいです。
小数点以下が0しかない場合は、小数点も含めて取り除きたいです。

3.00 → 3
3.02000 → 0.02

どう書けばよいでしょうか?
sprintf("%g", num) とすればいけるかと思いましたが、numが19120730.0000の場合に
1.91207e+07となり、使えませんでした。
perl5.8です。宜しくお願いします。



481 名前:デフォルトの名無しさん [2008/03/07(金) 17:04:54 ]
      ____
      // ̄ ̄`|
     /|断 だ |
     / |る が |
    /イ \___|
    / |// /| |
   /_\ /_/_レ|
   ∧o>/ イ≡三\|
  /ミ// r-<彡/|
  / /彡 ヾ\_O> |
 /iハ-イ)   ̄ヽ彡|
`/ i∧二    // |
/ (`ーv\  // /|
`<j`ーヾ_ゝ // (r|
  `<  ノ  /リ|
    `<  //7|
      `</ / |
        `<|


482 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 18:16:02 ]
正規表現関係ないな。脳みそつかえ

483 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 20:32:03 ]
>>480
s/\.?0+$//

484 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 10:40:12 ]
約2万件のデータがあるのですが
使用する文字が半角全角交じりで途中に記号やスペースもあるかもなのです
文字数もわかりません
2つのキーワードで全部取れますか?

キーワード@東京都
キーワードA3-5-7

何区何町だったか思い出せません><
何故か357って数字だけ覚えてました^^

485 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 10:59:33 ]
東-京/都
とかなってたら終わりだな

486 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 11:44:11 ]
東京都 市ってなかったっけ?w

487 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 12:23:42 ]
東京都.*?[33三].+?[55五].+?[99九]
で抽出してあとは手動かなぁ、俺がやるなら
漢数字が入る地名とかいちいちはじいてられないし

488 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 14:42:33 ]
<object> ←これ検索したいんですお願いします

489 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 17:32:38 ]
/<object>/



490 名前:デフォルトの名無しさん [2008/03/09(日) 01:17:00 ]
>>1
みたいにアンカー機能を付けたいのですがどのように書けば良いのでしょうか?

491 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 10:41:21 ]
>>490
>>1 を見てその質問の仕方なのかよ!?

492 名前:デフォルトの名無しさん [2008/03/10(月) 21:13:30 ]
<hoge aaa="aa\"bb<cc>dd" zzz="ee\"ff<gg>hh">value</hoge>

value

と置換する正規表現を教えて下さい
言語は JavaScript で、戻り読みは使えません

493 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 21:23:42 ]
正規表現よく分かりません><
<[^/]+>([^<]+)</.+>

494 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 02:03:14 ]
入門 正規表現

サンプルがJavaで吹いた

495 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 06:12:35 ]
>492
ブラウザのJavaScriptならXPathのほうが速くて正確

496 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 06:39:06 ]
>>495
ブラウザじゃないです

取得したページからタグを削除することを目的としています

497 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 06:41:25 ]
>>495
493の正規表現でいいんじゃね?

498 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 08:57:13 ]
秀丸ではスペースは直打ちがデフォですか?
何か気持ち悪い。

499 名前:デフォルトの名無しさん [2008/03/12(水) 01:26:27 ]
Perlの正規表現で[^\.-z]っていうのがあったんですけどこれってどういう文字が当てはまるんですか?



500 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 01:36:32 ]
>>499
ASCIIのコード表でも見てみればいいんじゃないかな

501 名前:デフォルトの名無しさん [2008/03/12(水) 06:02:36 ]
>>500
見てみたけどピリオドのほうがzより後に来てるのでこれおかしいんじゃないのと思って質問したのですが・・・

502 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 06:04:10 ]
どこの表にそんなでたらめが書いてあるんだよ

503 名前:499 [2008/03/12(水) 06:07:45 ]
あ、あれ・・・
もう一回調べてみたらピリオドのほうが先に来てる・・・

504 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 22:09:17 ]
>>503
あー、すまん、書き間違えてたので修正しといた。

505 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 22:16:00 ]
ってのは冗談として、
そういう ASCII コード表の順に大きく依存するような範囲指定を書くのは良くないと思う。
バグってハマったときに ASCII コードを凝視しないと解決いけなくなるし、移植性も低くなる。
アルファベットと記号は分けて書くようにするとか、文字クラスなどを利用した方が良い。

506 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 23:26:03 ]
>>505
言うことは非常によくわかる。
文字クラスを使うべきっていうのには完全に同意。
でもASCIIコード順は移植性十分にある気がする。
とりあえず俺はASCIIコードで範囲指定するのは問題ないと思う。

507 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 23:49:22 ]
個人的には
OSの事情とかLOCALEまわりのランタイムの完成度とか
POSIX文字クラスは警戒心をくすぐるものだw

508 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 02:07:43 ]
こんばんは!
はじめましてよろしくです^^

キーワード@とキーワードAを同時にグレッペ出来る機能のあるツールはありますか
1000ファイル単位で処理したいんですが
1ファイルに@AA(Aは同じものが連続である)
これを行ごとgrepしたいんです
Aについては1つ削除がいいです
よろしくお願い致します

キーワード@東京都 キーワードA性別A(性別マーク)

509 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 02:25:18 ]
日本語でおk



510 名前:デフォルトの名無しさん [2008/03/13(木) 03:23:27 ]
3回読んだが意味わからん

511 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 03:30:34 ]
なんとなくわかった気がしたけど最後の1行でぶちこわされた

512 名前:デフォルトの名無しさん [2008/03/13(木) 07:22:30 ]
グレッペ

513 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 07:40:30 ]
こんばんは迄呼んだ。

514 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 08:09:40 ]
グレッペのあたりで断念した

515 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 09:04:25 ]
デフォルトのまで読んだ

516 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 09:11:02 ]
1ファイルに3つのキーワードが先頭から
 都道府県名
 性別
 性別を表す何らかのマーク
の順番で並んでいて、
2つめと3つめは同じ性別を意味する別表現である。
例えば2つめが「男」だったら、3つめは「♂」となる。
これをgrepしたいが、性別については一つ消したい。

こんな感じか?
grepだけじゃ無理だからsedかawk使え、でおk?

517 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 09:48:33 ]
わろた

518 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 12:54:59 ]
縦読みだろJK

こはキ11こAよキ

ここで、前半部分の"こはキ11こ"というのは、
個数は11個じゃないよ、というのを表している。
個は、!=11個、というわけだな。
後半部分の"Aよキ"というのは、
2個でもねーよ、というのを表している。
(2個 !=)という逆ポーランド記法を使っているようだ。

つまり、個数は11個でも2個でもないということだったんだよ!!!
Ω ΩΩ<な、なんだってー!!!

519 名前:デフォルトの名無しさん [2008/03/13(木) 16:15:05 ]
Perlで>>1のようにアンカー機能をつけるためには正規表現を学べばいいと聞きました

if ($FORM{'text'} =~/>>$d/)
こんな感じでアンカーを抜き出すのは合ってるのでしょうか?
そのあと$DATA[$d]てきなのを取り出すにはどうしたらいいのでしょうか?



520 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 16:26:58 ]
>>519
ハェ?誰に聞いたんだ?言った奴に質問してこい

521 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 20:34:26 ]
$FORM{'text'} =~ s/>>(\d{1,4})/<a href='#$1'>>>$1<\/a>/ixms
思いついたやつを貼ってみる
こんなんだっけ?perlうろ覚えだわ

522 名前:デフォルトの名無しさん [2008/03/13(木) 21:25:39 ]
>>521
うまくリンクされません。。
$FORM{'text'} =~ s/>>(\d{1,4})/<a href='#$1'>>>$1<\/a>/ixms
↑これは桁数が1〜4ならマッチということですよね
リンクされないのはなぜでしょうか?

523 名前:デフォルトの名無しさん [2008/03/13(木) 21:30:52 ]
すいません
自己解決しました
$val =~ s/</</g;
$val =~ s/>/>/g;
これでタグを無効にしていました
それで>>521さんの通りにやるとアンカー自体はマッチします
この後それを取り出すのはどのようにすればいいのでしょうか?
ログからデータを取得するのはわかりますが、実際にその取り出された部分だけを抽出して表示するやり方がいまいちわかりません

524 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 21:35:50 ]
webprog池

525 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 21:58:16 ]
>>508
やったな、おい!大漁じゃねーか!

526 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 07:20:33 ]
なんだい今更になって
本人乙とでも言ってほしいのか?

527 名前:デフォルトの名無しさん [2008/03/14(金) 18:46:06 ]
>>523

528 名前:デフォルトの名無しさん mailto:age [2008/03/14(金) 21:06:23 ]
「楽しいかもね、そうかもね」っていう文字列で
「楽.*ね」ってやると、.*は可能な限りマッチするから
「楽しいかもね、そうかもね」まで拾っちゃうでしょ?
それを「楽しいかもね」でマッチさせたい場合どうすればいいですか?

529 名前:デフォルトの名無しさん [2008/03/14(金) 21:08:42 ]
*?って?をつければ非欲張り型(なるべく短くマッチ)になるかも知れない



530 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 21:08:49 ]
>>528
まずは>>1を音読したまえ

531 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 21:09:35 ]
楽.*?ね

532 名前:デフォルトの名無しさん mailto:age [2008/03/14(金) 21:12:11 ]
.*? でした。

533 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 00:19:58 ]
60文字程のURLなんだけど
真ん中あたりの15文字くらいがわかんなくなりました
正規表現でなんとかなりませんか?

534 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 00:27:42 ]
その15文字の前か後ろの長いほうで検索すればいいだろ…

535 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 10:57:56 ]
>>528
楽[^、]*ね

536 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 11:05:59 ]
>>535
それが許されるなら
楽しいね
だって許されるはずだ

537 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 11:47:45 ]
楽しい、ね

538 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 11:48:14 ]
楽しいかもね楽かもね

539 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 14:28:52 ]
>>535
だったら
 楽[^ね]*ね
でもいい様な。



540 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 18:53:11 ]
ワード協会とか除外すればいいのどは

541 名前:デフォルトの名無しさん [2008/03/15(土) 22:03:46 ]
安楽死ね

542 名前:デフォルトの名無しさん mailto:age [2008/03/16(日) 00:57:08 ]
「楽しいかもね、そうかもねABC」っていう文字列で
「ね.*$」ってやると
「ね、そうかもねABC」まで拾っちゃうでしょ?
それを最後の「ねABC」でマッチさせたい場合どうすればいいですか?

543 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 00:59:00 ]
ね.*?$ だと何度言えば

544 名前:デフォルトの名無しさん mailto:age [2008/03/16(日) 01:02:19 ]
>>543
マジで?できないけど??

545 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 01:04:58 ]
[^ね]を使うとか、いろいろやりようはある

546 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 01:08:49 ]
>>544
最短一致に対応してないタイプの正規表現なのかな。

547 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 01:16:55 ]
>>543,546
その目的には、最短一致は使えないから。
照合開始位置を後ろにずらしてまで最短を見つけるわけではない。

548 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 01:21:20 ]
ああ、そうなんだ。

549 名前:デフォルトの名無しさん mailto:age [2008/03/16(日) 01:34:22 ]
さあ、この問題を解決できる神はいるのだろうかっ!!(ただ答えが欲しいだけ)



550 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 01:35:49 ]
ね[^ね]*$ じゃないのか?

551 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 01:50:55 ]
それもう545で提案されてんじゃん。

552 名前:デフォルトの名無しさん mailto:age [2008/03/16(日) 02:24:31 ]
>>550
THX!ひとまずそれで省いた後
ね$をマッチさせることにするよ

553 名前:492 mailto:sage [2008/03/16(日) 03:14:37 ]
やはり戻り読みが使えないと難しいですか?

554 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 03:24:12 ]
戻り読みはいらんだろ

555 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 06:10:58 ]
Vimで
2008年3月16日 06:09:42

2008-03-16 06:09:42
のように年月を-で、日を削除するように置換するにはどうしたらいですかね?

556 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 06:25:49 ]
:%s/年/-/
:%s/月/-/
:%s/日//

じゃあかんのんか?
というか、3 を 03 に変える所までやりたいの?

557 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 06:31:06 ]
>>556
説明不足ですみません、対象のテキストには日付以外にもいろいろ書かれていて、
年や月などの単語はそのままに日付部分だけ置換したいのです。
日付の正規表現が理解できていないので、こちらでお尋ねした次第です。

>というか、3 を 03 に変える所までやりたいの?
可能ならしたいです。

558 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 07:04:36 ]
とりあえずこれでいけた。

:.s/\([0-9]\{1,4}\)年\([0-9]\{1,2}\)月\([0-9]\{1,2}\)日/\=system("printf '%04d-%02d-%02d' " . submatch(1) . " " . submatch(2) . " " . submatch(3))/

559 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 07:09:55 ]
しまった。
テスト用に1行のみの置換にしてた。
:.s は :%s に変えてね。
まあ分かると思うけど。



560 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 07:45:51 ]
>>558さん、ありがとうございます。
やってみたのですが、うまくいかず、日付の部分が丸ごと消えてしまうようです。

'printf' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

と出ました。こちらのVimの設定が悪いのでしょうか?もう少し試してまたレス返しにきます。

561 名前:>>555=>>557 mailto:sage [2008/03/16(日) 08:05:26 ]
何度か試したのですが、同じ結果です。
一応こちらの手順ですが、スレに貼って頂いたものをクリップボードに入れてから、
:<C-R>*
で貼り付けして、先頭を :%s/ に変えてテキスト全体に適用してから、実行しました。ほぼコピペなので打ち間違いはないと思うのですが。
Vim7 を Windows 2000 sp4 で使ってます。
printf などもわからないため、もう少し調べてみます。

562 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 10:10:00 ]
>>555
ViVi でだけど以下でいけた
:s/(\d{4})年(\d{1,2})月(\d{1,2})日 (\d{2}):(\d{2}):(\d{2})/\1-\2-\3 \4:\5:\6

Vim でも同じように出来るんじゃないか?

563 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 11:45:32 ]
>>562さん、やってみましたが無理でした。
マッチはうまくいってるみたいですが、置換の仕方がVimとだいぶ違うようです。
ViViはいじったことないので、少し調べてみます、スペース入れる辺りがよくわかりませんので。
わざわざありがとうございました。皆さん、お手数おかけしております。

564 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 12:03:58 ]
お二人のご教示をヒントにいろいろいじっていたら、以下で、

%s/\([0-9]\{1,4}\)年\([0-9]\{1,2}\)月\([0-9]\{1,2}\)日/\1-\2-\3/g

2008年3月16日 06:09:42

2008-3-16 06:09:42

のように、桁数が1桁のままですが、それ以外は置換できました。もう少し試行錯誤してみます。

565 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 12:29:58 ]
月などを2桁にしたいのなら、ViViだと以下のようにすればいい

:s/(\d{1,4})年(\d{1,2})月(\d{1,2})日 (\d{1,2}):(\d{1,2}):(\d{1,2})/format("%04d-%02d-%02d %02d:%02d:%02d", $1,$2,$3,$4,$5,$6)/e


566 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 16:54:21 ]
>>560
>>558 は printf コマンドがあることを前提にしてるから
Windows のコマンドプロンプトだと無理なんだろう。
Cygwin でやればいけるはず。

567 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 17:51:53 ]
>>565さん、ViViを使って、教えていただいた正規表現でできました。
いろいろVimで粘ったのですが自分のスキルでは無理だったので。
ありがとうございました。

>>566さん、ご教示ありがとうございます。
Cygwinはよくわからないのと、>>565さんの方法で出来たので printfコマンドはあきらめました。

>>555の質問の件は>>565さんので解決することができました。
皆さん、いろいろ教えていただきありがとうございました。お世話になりました。

568 名前:デフォルトの名無しさん [2008/03/16(日) 19:50:39 ]
あまりの丁寧なレスに
全米が泣いた

569 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 14:41:31 ]
初心者です、それなりに調べたんですが・・

あああああああ
aaaaaaaaa
??????????
乙乙乙乙乙乙乙乙乙乙乙乙

こういうある文字の繰り返しを、一つの表現でマッチできますか?たとえば10文字以上
専ブラで弾きたいんですが、数字はのぞけると嬉しいです



570 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 14:44:54 ]
[^\d]{10,}

571 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 14:45:26 ]
"正規表現 後方参照"でググれ

572 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 16:39:30 ]
任意の一文字って . ドットのことでおききしたいんですけど
探したい文字の前につけるんですよね?
< を探すのに
.< として検索したら結果は
>< として検索されます
検索結果に > を含めない方法教えて下さい

573 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 17:00:47 ]
>探したい文字の前につけるんですよね?
新しい解釈だな

574 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 19:07:48 ]
久しぶりに理解不能なの読んだな
「>」でない任意の1文字 + 「<」
と一致させたいってことなら [^>]<
検索結果から>だけ取り出したいってなら.(>)
後者に何の意味があるのかは知らないけど

ただ少なくとも正規表現について基礎から勉強しなおしたほうがよさそうだな

575 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 19:15:14 ]
むしろ日本語について基礎から勉強しなおしたほうがよさそうだな

576 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 19:38:21 ]
最近も508が理解不能だったぞ

577 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 20:04:03 ]
読み直して 吹いた>>508

578 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 20:12:36 ]
>>514が秀逸

579 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 02:36:39 ]
>>577
あれからダブルグレッペというマクロをつかわせていたらきましたよw
一応テストしてから本格的に使わせていただこうと
HDDの奥深くにテスト用のテキスト置いて、 grep開始!
ほへ?
グアッガッガーッ!!うわぁぁああああ!!!
この音は何??
なんだろか!?
ハードディスクが唸りまくってるタラリーン
よくわからないけどドライブごとgrepしてくれたよ
1ファイルで5000行〜1万行が40万ファイルあるのに・・・(ポカーン
コントロール+オルト+デリートでストップかけたら
エディター画面の後ろ側にエラー画面がいくつもでてたww
今時ブラクラ??
驚いたというかワラタwww




580 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 15:44:41 ]
使用するソフトはProximitronです。

以下のような広告を含む<table>ブロックを丸ごと削除したいと考えています。
<table width=100% class=tbl border=1 cellpadding=5>
<tr bgcolor=#EEEEEE><td height=5px></td></tr>
<tr>
<td align=center>
<iframe id='a5c37d59' name='a5c37d59' src='ads.xxx.com/xxx/afr.php?n=a5c37d59&zoneid=2&cb=<?=41Q40eQDW2vfp6o;?>' framespacing='0' frameborder='no' scrolling='no' width='300' height='250'>
<a href='ads.xxx.com/xxxxxx/ck.php?n=adf3ef1c&cb=<?=41Q40eQDW2vfp6o;?>' target='_blank'>
<img src='ads.xxx.com/xxx/avw.php?zoneid=2&cb=<?=41Q40eQDW2vfp6o;?>&n=adf3ef1c' border='0' alt='' /></a>
</iframe>
<script type='text/javascript' src='ads.xxx.com/xxx/ag.php'></script></td></tr><tr bgcolor=#EEEEEE><td height=5px></td>
</tr>
</table>

一部伏字にして置換してあるので100%同じ文字列ではありません。
これをマッチさせて丸ごと削除したいのです。

<table.*>.*</table>
これだとページ自体が全体的に崩れてしまいます。
tableの開始と終了を合わせないといけないのですが
そこがネックになっています。

581 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 16:43:48 ]
>>580
正規表現スレだからこんな書き方をするとスレ違いかも知れないけど、
$NEST(<table,[^>]++class=$AV(tbl)[^>]+>*,</table>)

「*」の所を、「*消したい文字を入れる*」とか、すればいいんじゃないかな。

582 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 02:57:04 ]
拡張子のないファイルに.txt付けたいです
aa1234ファイル

[0-9]
$[\.(txt)]
だめですか?

583 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 03:02:31 ]
>>582
>>1

584 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 03:12:15 ]
+ が使えるなら
s/^\([^.]+\)$/\1.txt/
+ が使えないなら
s/^\([^.][^.]*\)$/\1.txt/

585 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 04:16:02 ]
>>583
了解
>>584
ありがとうございます

586 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 12:58:56 ]
(Perl5互換)のツールで半角括弧を削除したいんですよろしくお願いします
元の文字列
(10123)test.txt
希望する変換後の文字列
10123test.txt

使ってみたいツールはこれです
ベクター Flexible Renamer
ttp://hp.vector.co.jp/authors/VA014830/FlexRena/

このスレの>>1関連サイトを廻ってみたけどよくわかりませんでした
ツールの作者HPもいって見ましたがQ&Aとか掲示板はなかったです
どなたか括弧の取り除き方教えて下さいお願いします

587 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 14:28:15 ]
( 削除
) 削除

588 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 17:03:04 ]
正規表現教えて下さい
<h2>タイトル</2>
「<」から「>」までお願いします(「タイトル」の文字列含む)
どなたかよろしくお願いします

589 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 17:06:50 ]
>>1



590 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 17:15:46 ]
>>588です
書き込んでから>>1読みました
今のところ使うソフトは秀丸エディターを試用しようしてみよう思いますが
ツールは何も揃えていない状態なので解答者サンのお勧めのソフトで始めてみます
正規表現でテキストの加工をしたいです
初心者でも挫折しないで継続して使っていけるソフトも一緒に探してます
金額にもよりますがフリー有料問いません
使うソフトはまだ明確には決めていませんので取り合えずシェアーウェアーで試してから
本格的にやってみようと思います
<h2>タイトル</h2>
よろしくお願いします

591 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 17:18:55 ]
<h2>///ここは<strong>見出し</strong>です///</h2>

こんなのは想定しなくていいのか。

592 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 17:26:26 ]
>>591サン
即レスありがとうございます
そういうのもあるかもしれないです
文字列の中に <strong>見出し</strong> が入っていれば検索文字列も変わりますよねorz
<h2>からエンドを</h2>にする方法教えて下さい
お願いします


593 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 17:27:33 ]
途中に改行は?

594 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 17:53:20 ]
>>593サン
588です
途中に改行は想定していなかったです
あるかもわからないと今気づきました
お手数お掛けして恐縮ですが何卒よろしくお願い致します

595 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 23:10:25 ]
おまいら、よく>>588の文章で、その意図が判ったな。

596 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 23:37:54 ]
<h2>///ここは<h2><strong>見出し</strong></h2>です///</h2>

こんなのは想定しなくていいのか。


597 名前:デフォルトの名無しさん [2008/03/24(月) 23:43:26 ]
結局、正規表現は入れ子は処理できないのでは

598 名前:デフォルトの名無しさん [2008/03/24(月) 23:46:46 ]
<h2> (.*) </2>
\1

<h2> ([.\n]*) </2>
\1

とかでいいのでは?

599 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 23:47:39 ]
なるほどね
過去スレ読めばよかったorz
>>33まで読んだ



600 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 23:52:05 ]
>>595がここに張り付いてるようじゃ
このスレで勉強させてもらおうって人も尻込みするね
>>595の意図はそれなんだろうけど・・・

601 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 23:54:45 ]
ライオンはなんとかって話なわけで
潰しにかかれるうちに潰しちゃう
やな奴だ氏ねばいいよ
9図

602 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 23:58:48 ]

- - - こ こ へ 何 か 聞 き に 来 た 人 へ - - -

ま ず 過 去 ス レ 読 ん だ ほ う が い い
変 な 潰 し 屋 が い て る よ う な の で ご 注 意 下 さ い


603 名前:デフォルトの名無しさん [2008/03/25(火) 00:18:28 ]
質問です。

正規表現だと、〜〜を含む行を探すってのは簡単にできるんだけど
〜〜を含まない行を探すのはどうするのが一般的なのでしょうか?

エディタならば、「abcde」を含む行を
^((.*)abcde(.*))\r\n
で探して、削除することで処理できるのですが、
これはあくまで含む行を探してるのであって、
含まない行を探すというのとは違うような気がして釈然としません。

別に今困ってるわけじゃなくて、知っておきたいだけなのですけど・・・。
よろしくお願いします。

604 名前:デフォルトの名無しさん [2008/03/25(火) 00:24:37 ]
うあ、>>473ですでにあった。

605 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 00:25:12 ]
>>603
言語理論での定義では、正規表現は「ある文字列を含まない文字列」はあらわせない。
しかしそれでは不便なので、パターンマッチ用に拡張された言語では否定を表現する方法を持っている場合はある。

606 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 02:48:25 ]
sage を含まない文字列

^(?!sage)(.(?!sage))*$

607 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 03:06:14 ]
>>603
^([^a]|a([^b]|b([^c]|c([^d]|d([^e]|$)|$)|$)|$)|$)*

608 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 08:13:09 ]
>>603
vi, vim, ViVi なら

:v/regexp/d

で正規表現に一致しない行を削除できる

609 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 12:28:43 ]
<h2 title="></h2>">みだし</h2>

こんな記述も可能ではある。
結論: HTMLのパースに正規表現は向かない





610 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 13:40:43 ]
java1.4ですが、

 1234567890 を 1234______ にリプレイスしたいのですが、

どうすればできるでしょうか?

611 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 13:44:44 ]
"1234567890".replaceAll("[567890]", "_")

612 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 13:45:35 ]
"1234567890".replaceAll("[5-90]", "_")

613 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 13:55:11 ]
「違うんです。
 987654 なら 9876__
 314159265358979 なら 3141____________
 にしたいんです」
かな。

614 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 14:02:37 ]
>>610
自己レスですが、いろんなサイトを見よう見まねで + 気合で何とかできました。


"1234567890".replaceAll( "(^....|).+?(?=.+|$)" , "$1_")



615 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 20:25:13 ]
「任意の一文字」の.や「前にある文字の1回以上」の+は、bashだとそれぞれ?と*ですが、
正規表現は規格で決まってるものではないんでしょうか?
言語ごとに違いってあるんでしょうか?(bashは言語じゃないってのもありますが・・・)

616 名前:615 mailto:sage [2008/03/25(火) 20:27:21 ]
「前にある文字の1回以上」の+

↑は違いましたね・・・失礼しました。

617 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 20:28:54 ]
>bashだとそれぞれ?と*
それ性器表現じゃないし


618 名前:615 mailto:sage [2008/03/25(火) 20:49:04 ]
>>617
bashのは正規表現とは言わないんですか、失礼しました。そう呼んでるサイトも見かけますが・・・

bashの*に対応するのは.*ですね。
bashスクリプトとperlスクリプトが混ざってると、ちょっと紛らわしいですね

619 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 22:05:10 ]
bash のは言うならワイルドカードだな。



620 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 01:49:44 ]
grepとglobの違い。

621 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 03:33:07 ]
えっ?どう違うの?

622 名前:デフォルトの名無しさん [2008/03/27(木) 13:47:15 ]
えっと・・・
VBS (WSH Windows Scripting Host) のRegExp では
マルチラインの指定はできんですか?
ググって必死こいて探してるけど見つけられないんで。

623 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 14:56:06 ]
かなり前のバージョンでサポートされた

Set ObjRegExp = New RegExp
ObjRegExp.Multiline = True

624 名前:デフォルトの名無しさん [2008/03/27(木) 22:10:38 ]
>>623
できました。アリガトです。

625 名前:デフォルトの名無しさん [2008/03/29(土) 17:03:54 ]
「ます」「ただいま」
という二つの単語がある場合で
上記2つにはマッチするが
たとえば「まる」という言葉にはマッチしないようにする
正規表現ってどうやればいいですか?

今は「ます」と「ただいま」の2語をマッチするようにしているのですが、
やり方が悪いのか「まる」という言葉でもマッチしてしまいます。

626 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 17:12:13 ]
>今は「ます」と「ただいま」の2語をマッチするようにしている
具体的にはどうしているの?

627 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 17:15:05 ]
(ます)|(ただいま)

どう間違えると「まる」にマッチするのか知りたい。

628 名前:625 [2008/03/29(土) 18:03:22 ]
()なんてあったのか!

解決しました!ありがとうございます。

629 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 18:12:12 ]
どうやっていて (ます|ただいま) にマッチさせたいのに まる に
マッチしてたのかという謎を解決して欲しいです。



630 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 18:43:26 ]
>>627
そんな書き方があるとは知らなかった
どの正規表現実装か教えてくれ

631 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 21:09:51 ]
Firefox2.0.0.13の拡張機能Adblock Plus 0.7.5.3でフィルタを登録しています。
/[\W_]ad(?!=&)(banner|click|conmatch|eeper|flow|frame|ima?ge?|log|serv(er|e)?|stream|type|view|vert(ising|isement)?|trix|xchange|wrapper)?s?[\W\d_]/

これが↓にもヒットしてしまい表示されなくて困ってます。
ttp://navi.ekitan.com/ppnavi/Dr?PC=&uid=&dir=22&path=2008032920482250400&flati=12485742&flong=48790567&fland=%E5%A4%A7%E9%98%AA%E5%BA%9C%E5%A4%A7%E9%98%AA%E5%B8%82%E4%B8%AD%E5%A4%AE%E5%8C%BA%E5%A4%A7%E9%98%AA%E5%9F%8E1-1&ftell=&sf=10900
デコードすると、
ttp://navi.ekitan.com/ppnavi/Dr?PC=&uid=&dir=22&path=2008032920482250400&flati=12485742&flong=48790567&fland=大阪府大阪市中央区大阪城1-1&ftell=&sf=10900
よく分らないのですが、"中"の%E4%B8%ADに当たってるようです。

一番よく使ってるフィルタなので消したくないです。
このフィルタで"中"にはヒットしないような正規表現は可能ですか?

632 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 21:55:14 ]
/[^%A-Za-z0-9]

633 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 07:49:32 ]
一番外側の開始文字〜終了文字までを
マッチさせるようなのは正規表現でいけません?

開始終了を括弧としたら
"(((1 + 2) * 3) - 4) / 5"
の時
"(((1 + 2) * 3) - 4)"
ここまで取れない?

括弧見づらいからブレイスにするけど
/{([^{}]*|{[^{}]*})*}/
だと2段までしかとれないのは何故?


634 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 08:00:38 ]
/{([^{}]*|{([^{}]*|{[^{}]*})})*}/

こうすれば3段までマッチさせられるよ。

635 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 09:04:26 ]
普通に最長一致させてやりゃいいんでないの?
(1+2)*3)-4 みたいな構文が来たら困るけど

636 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 12:27:53 ]
質問ですperl5.8です

<aaa bbb ccc>
ddddddddddddd<aaa>

検索:<aaa.*?>(.+?)<aaa> で検索したけどマッチしません。どなたかよろしくお願いします

637 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 13:22:02 ]
>>636
.*? の部分かな。
<aaa[^>]*> でどうだろう。

638 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 14:20:12 ]
>>636
対象が複数行なんだよね?

$str = "<aaa bbb ccc>\nddddddddddddd<aaa>";
$str =~ s/<aaa.*?>(.+?)<aaa>/$1/s; # 後ろに s つける
print $str;

639 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 14:22:45 ]
改行のせいだろJK

(?s-:<aaa.*?>(.+?)<aaa>)



640 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 14:23:10 ]
うわぁ、更新してなかったorz

641 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 22:23:59 ]
みなさんレスありがとう>>636です
上手くいかないです^^;
もうちょっとガムバッテみます
複数行になると難しいですね
続いた行はできそうな気がするんだけどできないorz

642 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 22:43:52 ]
while (<FH>) { /pattern/s; # 先生、何もマッチしません }
if (@lines =~ /pattern/s) { # 先生、ここ通りません }

どっちか知らないけど。

643 名前:デフォルトの名無しさん [2008/04/04(金) 20:06:53 ]
" 11 11 "
これにマッチあせて"11 11"を取得することはできますか?
「 *([^ ]*[.]*[^ ]*) *」
でやってみたのですがうまく取得できなくて・・・
スペースは全て全角です
お願いします

644 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 21:22:00 ]
>>643
途中の[.]*でぶっ飛んでる。つーか、. に [ ] つける意味がないよね。

645 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 21:30:34 ]
>>644
じゃあ教えてあげればいいのに文句書くだけなら解答者じゃない荒らしだ
どっか池

こんな感じか違うかw
".1+.*?"

646 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 21:35:40 ]
スペースが全角って、もとの文字列がってこと?
あと 11 と 11 は同じ文字?
それなら

+(([^ ]*) +\1) +

かな。全角を認識させたいなら・・・環境によるなぁ。

647 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 22:01:59 ]
perl5.8です
文字列を3行続けて取得したいのですが教えて下さい

【郵便】100-0001
【住所】東京都○○区○○町1-2-3 もしくは 神奈川県○○市○○町1-2-3○○○○○○○○マンション3階303号室
【電話】03-3000-XXXX

1行目、3行目は行頭にそれぞれ【郵便】【電話】がありますが
2行目の住所部分はマンション名が長かったりすると【住所】はなくて行頭が東京都や神奈川県から始まる行もあります

3行連続で取得する方法教えて下さい

648 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 22:18:25 ]
【郵便】[.\n]*?【電話】.*

649 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 22:26:17 ]
>>647
pc11.2ch.net/test/read.cgi/php/1203935151/280 とか
pc11.2ch.net/test/read.cgi/php/1204488452/42 とか
>>636辺りに心当たりはないか。



650 名前:デフォルトの名無しさん [2008/04/05(土) 00:02:46 ]
>>646
「○11○5656○」
○は全角スペースです
全角スペースに囲まれた文字列を取得したくて・・・
11とか5656は任意の文字で
間に全角スペースが入っているかもしれないんです
上の文字列だったら「11○5656」
って感じで
わかり難い書き方して申し訳ないです

651 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 00:10:43 ]
>>650
言語は?

652 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 00:19:51 ]
○(.*)○
これで抽出できないかな?正規表現始めたばっかでよくわからないけど

653 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 00:20:47 ]
○*(.*)○*
こうか、すまん

654 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 00:21:36 ]
基本的に正規表現は最長一致するから >>652 で問題ないんじゃない?

655 名前:デフォルトの名無しさん [2008/04/05(土) 00:27:45 ]
test

656 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 01:28:02 ]
>>650
言語と文字コードがないとあきまへんが、なんとかせーっちゅーなら、

(\xe3\x80\x80|\xa1\xa1|\x81@)(.*)(\xe3\x80\x80|\xa1\xa1|\x81@)

これでいけますわ。utf-8,shift_jis,euc-jpなんでもこいのすぐれものや。

657 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 01:59:54 ]
どうして正規表現はいつもいつも顔文字に見えてしまうんですか?

658 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 02:59:24 ]
>>650
「○11○5656○」
これの1個目3個目の空白はマッチさせないんだよね
2個目の空白は実際にはあるかないかわからない
両隣は任意の文字
ん〜これピッタシあわせるのは今の情報だけでは難しいというより不可能じゃないでしょうか
任意の文字が半角だけの構成なら[0-9][a-z]簡単なんだけどなー
何か他にkeyに出来そうなのないですか?

それとここで解答者が自分の環境でよい結果が出てもあなたの環境ではマッチしないかもしれない
環境に合った正規表現の使い方をしないとマッチさせれない場合がありますよ
質問者も解答者も徒労に終わるので
あなたが正規表現をどのように使うのか記載したほうがいいよ
正規表現を扱おうとする言語もしくは正規表現を扱えるエディターで検索しようとしているのか
あなたを攻めてるわけではないので誤解しないようにね

659 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 03:16:49 ]
>>650
[^\x81@].*[^\x81@]



660 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 08:53:44 ]
>>653
ああ、そうか。そうだな。

661 名前:650 [2008/04/05(土) 12:28:26 ]
すみません戻りました
皆様レスありがとうございます
「○11○5656○」
○は全角スペース、何個あるかわからないし、ないかもしれません
「一三○四○○○」だったら「一三○四」
「○○○○八九4○○た」だったら「八九4○○た」
こんな感じで取得したいです
他の文字は任意です。全角の場合が多いですが
言語はJava、コードはUnicodeかな?
簡単に言うと両端の全角スペースをトリムしたいだけなのですが・・・
わかり難い表現ですみません

662 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 12:35:01 ]
先頭の全角スペースを除去、末尾の全角スペースを除去
という処理にしたほうが簡単だよ

非欲張りなのが使えればこうかな
/ *(.*?) *$/

663 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 12:50:55 ]
/^□*([^□]+(□+[^□]+)*)□*$/

664 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 03:05:23 ]
gawk3.16です
2行に渡る文字列を検索でマッチさせたいです
<title(.+?)\n.*title>
秀丸(正規表現ON)ではマッチしていたのですがgawkではマッチしません
アドバイス頂けましたら幸いです
どうぞよろしくお願い致します

665 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 03:14:35 ]
mオプション可能な処理系を使うか、事前に加工しとくか。

666 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 04:08:57 ]
>>665さん
mオプション
マルチラインですね
実はgawkのスクリピトを教えていただいたのです
とても気に入り今後末永く使わせていただこうと思うのですが
複数行の検索が秀丸と違うようなので戸惑っています
他にgawkのアドバイスありましたらよろしくお願いします

667 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 06:08:38 ]
>666
相変わらず具体的じゃないのね。
665をやったがこういう風にうまくいかなかったとか
こうしたけどダメだったとかあれば、アドバイスのしようもありますが、
他にアドバイスと言われてもなかなか。

668 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 08:58:29 ]
>>666
ない物は仕方ない。
mオプションの正規表現を組み込んだawkを自前で作る?
perlとか、正規表現が拡張されてる処理系に移った方が、後々幸せ。

669 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 13:26:21 ]
gawk3.16で複数行にまたがる文字列をマッチさせたいです
エイチティティピー://www.kt.rim.or.jp/~kbk/gawk/gawk_5.html#SEC28
上記アドレスのページに「複数行レコード」と記述がありました
>変数FS に "\n"という文字列をセットすれば良い。
> (これは、改行にマッチする単純な正規表現である)
わかる方おられましたら教えて下さい

やってみたこと
gawk.exe "FS = \n 検索文字列 プリントアウト"入力ファイル>出力ファイル
エラー:^バックスラッシュが行最後の文字になっていません

gawk.exe "FS = \n 検索プリントアウト"入力ファイル>出力ファイル^
エラー:More?

gawk.exe "FS = \n 検索プリントアウト"入力ファイル>出力ファイル/
ファイル名、ディレクトリ名 またはボリュームラベルの構文が間違っています

PS:
666です
>>667さん
>>668さん
レスありがとうです




670 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 13:57:34 ]
>>669
気付け。gawkじゃ無理。
FSはフィールドセパレータ。用途が全然違う。

671 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 14:00:36 ]
そういうのはどうしてもawkでやりたければtrで改行文字を置換してからawkで処理して戻すとかやるからなぁ。
awkだけじゃなくて、基本的な知識が足りなすぎるよ。

672 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 14:04:12 ]
>>669です
>>670さん
>>671さん
gawkは諦めた方がよいかもしれないですね
私じゃ無理だということはわかりました
アドバイスありがとうございました^^;

673 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 16:01:44 ]
<element attribute>マルチラインを
キャプチャしたいんです</element>

このお題はまだ続くのかな。

> perl5.8です
> gawk3.16です
次は何だろ。

674 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 00:07:32 ]
>>673
残念でした
秀丸
perl
gawk
ですよw

秀丸でもう少しのところまでいけたんだけど
データが長すぎて最後のソートが出来なかったんだ
それでエクセルとかでやろうとしたんだけど
文字化けで遠回りした
正規表現扱えないんだってわかるのに1週間かかったw
んで改めてやってるんよ
データ形式をちょっと変えて保存するだけなんだけど
こんなに難しいとは思わなかった
秀丸スレの人たちとUWSCスレの人たちのお陰で
ここまでなんとか前進できた
いつも「もう少しだっ」って思っていたところへたどり着くまでに
思いもよらぬ壁が現れるんだ
この正規表現もそうだね
私は正規表現って生まれて始めて知ったんだ
またお願いしますね
オヤシミ^^


675 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 03:18:20 ]
>>674
Excelでも正規表現使えるよ。
CreateObject で正規表現オブジェクトを使えるようにすればね。

つか、Perlでできなかったてーのはなんでだ?


676 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 03:25:58 ]
>>675
perlで出来そうなんだけど私が作れないだけ^^;
オヤシミノシ

677 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 05:15:30 ]
>>676
正規表現使うならperlじゃなくてもいいが何かプログラミング言語もやっといたほうが自由度はあがると思うけどな。
perlは何するにしても過去の遺産のおかげで楽ができるから趣味でやる分にはお勧め。

678 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 14:44:33 ]
いくつかのスレで見かけたけど、大本のやりたいことは何なの?
ウェブページをテキストで取り込んでデータベース可?
なんだかやりたいことの過程で部分部分でこのソフトでこうするのはどうしたらいいか
とういう質問でよく分からない。

紙copi/紙copi lite/Kamicopi/ネタの種 12
pc11.2ch.net/test/read.cgi/software/1201627570/
あたりのソフトを使えば良いんじゃないか?とか思っちゃうんですが、見当違いだったらごめんね。

679 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 18:46:44 ]
>>678
紙コピ持ってるよ
最初はスゲーとか思ってシェア払って正規ユーザーなったけど
加工で正規表現検索できないので役に立たない
ビジネスバージョンも抽選で当たったけど
もう使ってないよ

やりたいことは何十回も書いてるよ
ここで書くのもなんなんだけど
既存のファイルからタイトルとデータ1箇所を抽出して一覧表作りたいだけ

<ol>
<li><a href="ファイル名">タイトル</a></li>
<li>データ</li>
</li>予備項目(空欄)</li>
</ol>

この前ファイル名とタイトルの部分を作ってくれた方が居たんだけど
その下にデータ項目と予備項目を作らなければいけないことがわかって
もっかい頼んだら後でコロコロ変わるってことで断られた
それで自分でやってるわけ^^;



680 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 22:33:34 ]
素朴な疑問だが、「シェア払って」ってなに?

681 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 23:15:19 ]
「シェア払って」ですか
「お金払って」ですね


682 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 11:27:48 ]
シェアウェアにシェアフィーをシェア、って早口言葉みたいだ。

683 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 01:20:21 ]
Wiki(pedia)って感じだな。

684 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 10:39:52 ]
詳説 正規表現 第3版の訳本がやっと出るっぽいな
原書あるから要らんけど…

685 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 18:59:29 ]
Perl5.8.2です。
「あかスまのた゚」「゙ナをフaき」のように、
規則性のない全角かな・カナ、半角かな・カナ(濁点半濁点含む)をマッチさせたいのですが
例えば上の例ですとどのようなパターンで記述すればいいでしょうか?
文字コードは何でも構いませんが、可能ならeuc-jpが良いです。
よろしくお願いします。

686 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 19:16:59 ]
半角英字が混じってるように見えるが、
それは排除しなくていいのか?

Ruby なら EUC にして 0x00 〜 0x7F を排除すればいいだけだと思うが、
規則性の有無のチェックが必要とかなると正規表現では難しいかと。

687 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 19:20:26 ]
あ、全角英字や漢字も除くというか、
本当に仮名のみにするのか。
仮名の範囲の端同士で [ヲ-゚ぁ-んァ-ミム-ヶ] みたいにすればいいと思うよ。
Ruby なら文字コード指定できるから、EUC でそうやればいい。

688 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 20:59:19 ]
どうだい本当にそういうことか?
文字化けしてる領域をまるっと抽出したいってことだと思うんだが
もしそうなら>>306みたいに先読み使えばどうにかなると思う

689 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 00:19:19 ]
ttp://www.oreilly.co.jp/books/9784873113593/
第3版が出るようだけど,PHPイラネなら買うほどでもないのかな



690 名前:デフォルトの名無しさん [2008/04/12(土) 01:42:47 ]
性器にperlを埋め込みたいんですが、腕のいいクリニックをご存知ありませんか?

691 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 02:36:34 ]
埋め込むなら、perlではなくpearlをどうぞ。

692 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 05:25:33 ]
さすがにRuby埋め込んでくれるところはないんでしょうか?

693 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 08:45:46 ]
ないね
Pythonなら最初から生えてるのにね

694 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 10:20:33 ]
朝になるとEiffelです。

695 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 19:18:06 ]
35の春。はじめての C 。


696 名前:デフォルトの名無しさん [2008/04/12(土) 22:01:15 ]
haskell! haskell!


697 名前:デフォルトの名無しさん [2008/04/13(日) 14:15:30 ]
正規表現でパスワードのような文字列にマッチさせることは可能でしょうか?
条件
・英字(大文字か小文字)と数字を必ず含む
・英字のみはマッチしない
・数字のみもマッチしない

^\w+$
はもちろん駄目で
^[a-zA-Z\d]+$
ももちろん駄目でした・・・

698 名前:デフォルトの名無しさん [2008/04/13(日) 15:36:33 ]
これでどうですか?
(\w+(\d*\w*)*|\d+(\w*\d*)*)

_と-の扱いは?

699 名前:デフォルトの名無しさん [2008/04/13(日) 17:01:14 ]
> _と-の扱いは?

ああ、それもいるのか・・



700 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 17:07:31 ]
先読み使える言語なら、それで一発では?

701 名前:デフォルトの名無しさん [2008/04/13(日) 17:26:35 ]
\d+(\d|\w|[-_])*\w+(\d|\w|[-_])*|\w+(\w|\d|[-_])*\d+(\d|\w|[-_])*|[-_](\d|\w|[-_])*\w+(\d|\w|[-_])*

702 名前:デフォルトの名無しさん [2008/04/13(日) 21:26:46 ]
教えて欲しいのですが、この /(?<=\{\s*)/ が perl に怒られるのはなぜでしょうか
* をはずすと特に問題は無いのですが

703 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 21:33:31 ]
>>702
エラーメッセージでてるだろ。
そこに理由が書いてあるから読めよ。

704 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 07:33:27 ]
>>701
サンクス試してみる。

705 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 08:25:50 ]
別々にマッチした方が良くね?



706 名前:デフォルトの名無しさん [2008/04/14(月) 22:46:37 ]
だな。おれもそうする。

どんなプログミング言語で書いてるのかわからんけど
if ($password =~ m/^[A-Za-z0-9_\-]+$/
&& $password =~ m/[0-9]/
&& $password =~ m/[A-Za-z]/) {
  ほげほげ・・・
}
みたい書いたほうが、どんな言語にも応用がきくし
あとのメンテナンスも楽だしな。
どうしても無理やり1つにまとめなきゃいかん事情があるんなら別だが。

707 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 01:54:40 ]
VC++ 2005、WinXPで開発をしています。
正規表現を扱えるライブラリを探しています。
出来れば、charとwchar_tの両方に対応しているものが欲しいと思っています。
片方なら、boostでいいと思うのですが……

どなたか、ご存知の方教えてください。

708 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 07:19:25 ]
"abc__def__ghi__jkm"という文字列があるとして、
この文字列中の「__」を任意の数だけ半角スペースに置換するという場合
(1が指定されたなら1つ、2が指定されたなら2つというように)、どのような記述になるのでしょうか。
使用言語はPerlです。

oオプションを指定して評価を1度だけにし、ループで回す、という方法は考えたのですが、
可能なら正規表現のみで完結させたいです。

どなたかご存知でしたら教えていただけないでしょうか。
よろしくお願いします。

709 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 07:48:59 ]
perlなら_でsplitしてjoinしたほうが速いような。



710 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 10:45:45 ]
正規表現でバッチ処理的な事したとき最速なのってやっぱperlか?

711 名前:デフォルトの名無しさん [2008/04/16(水) 13:58:17 ]
ruby

712 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 14:20:48 ]
まじか。ruby早いのか

713 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 14:24:48 ]
perlの方が糞速いよ

714 名前:デフォルトの名無しさん [2008/04/17(木) 04:26:31 ]
2ちゃんではurlを書き込むと自動的にリンクが貼られますが、
2ちゃん外のurlだとhttp://がime.nu/に置換されます
urlが2ちゃん内か外かを判断するにはどうやっているのでしょうか。

urlかどうかを判断し、リンクを貼るところまではネットで調べて↓のようにできたのですが、続きがわかりません。
ereg_replace("(http)(://[[:alnum:]\S\$\+\?\.-=_%,:@!#~*/&]+)","<a href=\"\\1\\2\">\\1\\2</a>",$str);

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

言語はPHPです。


715 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 07:00:53 ]
2chの中だったら
2ch.netというURLが必ず入るわけだから、
それが含まれている文字列にマッチするかしないかを確認すればいだけじゃないの

716 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 07:37:42 ]
2ch.netだけだと、
www.example.com/2ch.net/
がマッチしちゃうよ

717 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 07:41:25 ]
じゃぁ
//[^/].*2ch.net/

718 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 16:16:02 ]
itemが必ず入ってい<mark>〜</mark>を検索する方法はありましか?
その場合itemがない<mark>〜</mark>があり、これはヒットさせたくありません。

javaです。
正規表現は:<mark>.*?</mark>(?<!item.*?)

<mark> item </mark>  → うまくいく

<mark> item </mark> <mark> </mark> <mark> item </mark>  → うまくいかない
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑_↑↑↑↑↑↑↑↑↑
1個目のヒット_____________2個目のヒット

719 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 18:03:59 ]
それがXMLデータなら明らかにミスアプローチだと思う。



720 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 19:42:27 ]
>>718
そこに書かれている条件だけなら、
<mark>[^<]*item[^<]*</mark>
で上手くいくかもしれない。

<marK>とかのタグが入れ子するかもー、ということなら正規表現じゃムリ。



721 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 19:57:24 ]
正規表現でファイルに文字が存在するかチェックしています。
存在していたら中の文字を返す仕様です。
/(<grep\s*([^\s]+)\s*-\s*([^\s]+)\s*>.+<\/grep>/
<grep foo-../hoge/google.txt>マッチします。</grep>
この場合、../hoge/google.txt内fooという文字があったらに「マッチします。」を返します。

この応用で質問なのですが、
<grep foo-../hoge/>aaa<grep foo-./foo/>aaaaa</grep>aa</grep>
という文のように入れ子の場合、
<grep foo-../hoge/>〜</grep>と
<grep foo-./foo/>〜</grep>で
2回チェックしたいのです。

この場合、最長マッチでできるのですが以下のような場合も考えられるのでどうすればいいか困っております。
<grep foo-../hoge/>aaaaa</grep>
<grep foo-./foo/>aaaaa</grep>

どんな書き方がいいでしょうか?
ご鞭撻のほどよろしくお願いします。

722 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 20:00:02 ]
</grep>がどっちの</grep>を指してるのかわかりづらい
あとそういう入れ子構造は正規表現の苦手な分野だから、ほかの手が使えるならそっちのがいい

723 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 20:21:25 ]
教えてください。
正規表現じゃないアスタリスクってなんていうんですか?
たとえばsyslog.logから始まるファイルを表示するとき

$ ls syslog.log*

こんな感じで見てるんだけど、このときの*はメタキャラクタ?
また、こういうときに正規表現を使ってみたい場合はどうすればいいですか?

724 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 20:42:30 ]
わいるどかーど

725 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 21:04:26 ]
ls | grep 正規表現

726 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 21:16:35 ]
ありがとうございます。
なるほど、確かにシェルのワイルドカードですね。
納得しました。

727 名前:721 mailto:sage [2008/04/17(木) 22:14:46 ]
>>722
ありがとうございます。
C言語やJAVAなんかの入れ子のifのような感じといえばわかりやすいかもしれません。
こういう処理はどうやればいいのでしょうか?
正規表現とは関係ないですがよろしくお願いします。

728 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 00:05:52 ]
>>727
パーズして構文木を作って、構文木に対していろいろ処理をするのがふ
つう。
楽をしたいなら、その変な文法をやめてXMLにしてしまえ。DOMにしてか
らイロイロすればいい。


729 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 18:40:10 ]
>>728
ありがとうございます。
正規表現でやりたいです。

テーブルタグの入れ子処理みたいなものは正規表現では難しいのですね。。。
<table>
 <tr>
  <td>
   <table>
    <tr>
     <td></td>
    </tr>
   </table>
  </td>
 </tr>
</table>



730 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 21:07:38 ]
普通の正規表現では不特定回数の入れ子を扱えません。

731 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 11:38:21 ]
正規表現を基礎から学習したいのですが、チュートリアル・サイドで
人妻がどうのとか、女子高生がどうしたとかが概説に載っていて嫌な気分になりました。

そこできちんとした書籍を購入しようと思いますがオススメはありますでしょうか?
ポケット・リファレンスあたりかな?

732 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 11:48:12 ]
正規表現って学習するようなものか?
たしかに、正規表現を何か難しいもののように扱って、
「正規表現が分かる!」とか謳ってる本は巷に溢れてるけど、
役に立つと思ったのは一冊もないね。

処理系のリファレンスでも読んで試行錯誤するのが一番いいと思う。

733 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 11:59:21 ]
さっそくご回答いただきありがとうございます。
なるほど、モヤモヤがすっきりしました。
とりあえずエディタのヘルプで生きていきます。


734 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 00:56:54 ]
普段使いする1冊。
www.amazon.co.jp/dp/4798109126/
一応理論的な説明もなくはないけどメインはリファレンス。
簡単な例(任意の1文字にマッチさせるとか)から
進んだ内容(先読みとか)まで幅広くてグッド。

735 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 09:23:34 ]
詳説正規表現第2版の何が不満なのか

736 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 09:30:00 ]
もうすぐ3版が出るところだろ

737 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 16:29:32 ]
今週

738 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 23:25:14 ]
公式で買ったらもう届いたw

739 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 04:50:49 ]
2版だってまだ読み終わってないよorz



740 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 08:33:46 ]
>>738
マジかよwいいなー

741 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 23:54:46 ]
>>738
書評頼むよ
2版からどう変わってた?

742 名前:デフォルトの名無しさん [2008/04/24(木) 22:03:25 ]
教えてください
地図のアドレスなのですが
abc.com/map.php?x=123.4567890&y=34.56789012&z=1
これを下のように置換したいのですがどうやればよいのでしょうか?
x=とy=の値を取り出して
def.com/map.html?x=123.4567890&y=34.56789012&z=19
のようにしたいのですがよろしくお願いします。

rubyを勉強中です。

743 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 07:01:17 ]
URIはパーサ使えばいいやん

744 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 09:13:28 ]
>>742
'&'(と'?')でsplit()してからの方が楽だったりするかな。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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