[表示 : 全て 最新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)スレです。

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

321 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 23:32:07 ]
日本語でおk
それだと、0〜9 と 00〜19 にマッチ

322 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 23:38:08 ]
すみませんここで聞いて良い事なのか解らないのですが、よければお教えください。
C/Migemo 1.2 リリース版 for Windowsに付属の辞書を読み込ませhoをmigemo_queryしてみたことろ
([ホ☆★ほ逋捕縫豊B萠萌]|ho|Ho)と、なぜかBが含まれた文字列がかえってきました。
この文字列を利用して検索をすると当たり前ながらBに反応してしまうのです。
そこで質問なのですが、どうしてBが含まれるのでしょうか?
もしかして私の使い方が間違っているのでしょうか?

323 名前:320 mailto:sage [2007/12/09(日) 00:14:35 ]
>>321
すいません、それが言いたかった
ありがとう

324 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 00:33:23 ]
>>323
「すみません」だろ
日本から出て行けよ

325 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 00:50:18 ]
こらこら

326 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 01:08:50 ]
>>322
完全にスレ違いな気がするが、どこが適切か知らないので一応答えておくと、
ホウ素の元素記号がBだから。他にはsaで酸素のOが引っかかったりするはず。

327 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 01:41:55 ]
>>326
おおおおおおお!
なるほど…
おかげで謎が解けました
ありがとうございました。

328 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 00:38:45 ]
ひゃ[あぁ゛]*うまひ[いぃ゛]*

329 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 01:09:55 ]
ひゃうまひ゛



330 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 04:59:57 ]
ひゃ゛゛゛゛゛うまひ゛゛゛゛゛゛゛

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 ]
正規表現で遊べないかと考えていたんけど、みさくら語を正規表現で表すとしたらどうやる?






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

前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