正規表現 part2
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2005/11/03(木) 23:31:36関連スレ
UNIX板 正規表現
http://pc8.2ch.net/test/read.cgi/unix/1039165754/
プログラマー板 【Regular】正規表現【Expression】
http://pc8.2ch.net/test/read.cgi/prog/1126622479/
WebProg板 正規表現道場@2ch Part4
http://pc8.2ch.net/test/read.cgi/php/1105930285/
前スレ
http://pc8.2ch.net/test/read.cgi/tech/1062152374/
0002デフォルトの名無しさん
2005/11/03(木) 23:32:45つーか1誌ね
0003デフォルトの名無しさん
2005/11/03(木) 23:38:26性器表現 part2
http://pc8.2ch.net/test/read.cgi/tech/1131027222/
0004デフォルトの名無しさん
2005/11/03(木) 23:38:27性器表現 part2
http://pc8.2ch.net/test/read.cgi/tech/1131027222/
0005デフォルトの名無しさん
2005/11/03(木) 23:38:52重複してるのか?
0006デフォルトの名無しさん
2005/11/03(木) 23:41:16>http://pc8.2ch.net/test/read.cgi/tech/1131027222/
↑の方を削除依頼すればいいのでは?
0007デフォルトの名無しさん
2005/11/04(金) 00:03:130008デフォルトの名無しさん
2005/11/04(金) 00:11:130009デフォルトの名無しさん
2005/11/04(金) 02:48:530010デフォルトの名無しさん
2005/11/04(金) 13:53:130011デフォルトの名無しさん
2005/11/04(金) 14:34:01数字が 0 と正の整数だとして。
・(0|1|2|3ry
・([0-9]|[1-9][0-9]|1[0-9][0-9]|2([0-4][0-9]|5[0-5]))
・0 <= x && x <= 255
001210
2005/11/04(金) 15:47:07(2([0-4][0-9]|5[0-5])|1[0-9][0-9]|[1-9][0-9]|[0-9])
というように逆にしないとうまくいかないようです。
それは置いとくとして、これだと
2560 がヒットしてしまうのですよ
0013デフォルトの名無しさん
2005/11/04(金) 16:07:56言語は? Perl なら (?:1\d?\d?|2(?:5[0-5]?|[0-4]?\d?)|[3-9]\d?|0)
001410
2005/11/04(金) 16:20:22言語は何でもいいよ。phpでも秀丸マクロでも。
逆にいえば、どの言語でもそこそこ動くよう
一般的?なパターン構文のみを使った
正規表現がいいな
0015デフォルトの名無しさん
2005/11/04(金) 16:37:15頭と尻に[^0-9]付ければ良いだけちゃうの?
0016デフォルトの名無しさん
2005/11/04(金) 16:45:15てか、正規表現でなければならない理由は何?
>>11 の最後が一番話が早いと思うが。
0017デフォルトの名無しさん
2005/11/04(金) 16:47:53001810
2005/11/04(金) 17:44:44>正規表現でなければならない理由は何?
なぜなら、ここが正規表現スレだから。
必要とか不必要とか、そんなこというなよ。ロマンチックじゃないぜ。
0019デフォルトの名無しさん
2005/11/04(金) 18:12:48じゃあスレ違い。他所へ行け。
0021デフォルトの名無しさん
2005/11/04(金) 18:29:42ほほぅ。
0022デフォルトの名無しさん
2005/11/04(金) 21:02:36なるほどなるほど。
002310
2005/11/04(金) 21:11:32スレ違いと言われても・・・
こういう正規表現って他にも応用は効くと思うよ。
>>15のがいけると思ったけど、2560などを「マッチングさせない」ようにはできなかった。
^((2([0-4][0-9]|5[0-5]))|(1?[0-9]?[0-9]))$
入力が単語ならこれでいけた。サブパターンがいっぱい出来てうっとおしいけど
0024C ◆ntztQrP5vg
2005/11/07(月) 00:17:150025デフォルトの名無しさん
2005/11/13(日) 23:05:35[\x0-\xff]って書くんですか?
0026デフォルトの名無しさん
2005/11/13(日) 23:13:45それ.と同じ
0027デフォルトの名無しさん
2005/11/13(日) 23:20:040028デフォルトの名無しさん
2005/11/14(月) 00:39:15sedやawkなら.は改行にもマッチしますよ。探索空間が通常行単位なので、
行末の自然な改行とマッチしないように見えるだけでしょう。
sedならNなどで、awkなら変数に陽に改行を代入するなどしてお試しください。。
perlもマッチ演算子にsなどのoptionをつければ.が改行にもマッチします。
これも仕様をよくみると、普段は改行にマッチさせないというよりむしろ、
普段は探索空間を行単位にしていることからくると解釈すべきでしょう。
0029デフォルトの名無しさん
2005/11/24(木) 13:39:05ソースの解析のように読み進んでって"if"来たから"ifルーチン"処理モードに入ってとか"void"来たからメソッド処理モードに入ってとかやるのは苦手?
0030デフォルトの名無しさん
2005/11/24(木) 13:44:32無理すね。
そういう用途じゃないから。
正規表現は、あるクラスの文字列の集合(言語)を表現してるだけですから。
(で、たいていはパターンマッチに使う。)
ツール(sedなりperlなりlexなり)がそういうこと>>29やるために
正規表現を使うというstoryでしょう。
003129
2005/11/24(木) 14:07:14> ツール(sedなりperlなりlexなり)がそういうこと>>29やるために
> 正規表現を使うというstoryでしょう。
この場合、正規表現使うというのはどういう使い方なんでしょ?
たとえばifロジックの中の判断ルーチン部分が式の形になってるかどうかをチェックするために使うとか?
0032デフォルトの名無しさん
2005/11/24(木) 18:38:07それは構文解析器って奴の仕事だね。yaccとかbisonとか。
正規表現はその前の字句解析に使うね。lexとかflexとか。
字句解析で正規表現をどう使うかはググってもらったほうがわかりやすい解説があると思う。
003332
2005/11/24(木) 18:40:12で、lexとかflexは字句解析器を生成するためのツール。
003429
2005/11/24(木) 19:26:30lex/yacc自体の存在は知ってるんですが、自分のプログラム(C#)にどう生かすか、わかってません(´・ω・`)
いろいろ見てみます。
0035デフォルトの名無しさん
2005/11/25(金) 01:45:190036デフォルトの名無しさん
2005/11/25(金) 02:03:33岡江さんが作者だったのかー
0037デフォルトの名無しさん
2005/11/25(金) 04:16:580038デフォルトの名無しさん
2005/11/25(金) 11:12:39Yet Another Compiler Compiler
という全員が知っているようなマジレスをして
叩かれるのを待ってみるw
0039デフォルトの名無しさん
2005/11/25(金) 11:42:51ヤクの亜流だからバイソンという洒落で名前がついたと言う
嘘かホントか判らん事を書いて叩かれるのを待ってみる♪
0040デフォルトの名無しさん
2005/11/25(金) 11:44:22マジレスすると、キャイーンの天野っち。
0041デフォルトの名無しさん
2005/11/25(金) 11:47:44ttp://www.cjn.or.jp/docs/dic/unix-term-dic.html
と、信憑性が微妙なリソースへのポインタを示して
叩かれるのをry
0042酩酊 ◆TWARamEjuA
NGNG0043デフォルトの名無しさん
NGNG0044デフォルトの名無しさん
2005/11/27(日) 13:24:38$&はパターンマッチした文字列が入っているので直感的にわかりやすいんだけど
0045デフォルトの名無しさん
2005/11/27(日) 14:21:47適当な例で実行して結果を表示するとか試せばすぐわかるじゃん。
それと、一応、$~みたいなあまり普遍的でないものに言及するなら、
数ある正規表現の中のどの実装(仕様)のことなのか明記してくれ。
0046デフォルトの名無しさん
2005/12/11(日) 08:14:23xyzzyとかのエディタのgrepでやろうとしたのですが、検索してもよくわかりません。
Rubyとかスクリプト言語を使わないと無理でしょうか?
0047デフォルトの名無しさん
2005/12/11(日) 08:55:100048デフォルトの名無しさん
2005/12/11(日) 08:55:380049デフォルトの名無しさん
2005/12/11(日) 11:03:460050デフォルトの名無しさん
2005/12/11(日) 11:18:280051デフォルトの名無しさん
2005/12/11(日) 11:31:430052デフォルトの名無しさん
2005/12/11(日) 15:35:100053デフォルトの名無しさん
2005/12/13(火) 11:26:57検索結果を置換すればよろしかろ。
0054デフォルトの名無しさん
2005/12/15(木) 18:36:48さがす正規表現って、下記でよいでしょうか。
^(\s| )*$
既出でしたらすいません。
0055デフォルトの名無しさん
2005/12/15(木) 19:02:130056酩酊 ◆TWARamEjuA
NGNG005754
2005/12/15(木) 22:25:58↑全角スペース
ですかね?
とある入力項目のなかで、
\s と全角スペースで構成された、いわゆる”空行”を
はじきたいのです。
0058酩酊 ◆TWARamEjuA
NGNG^$ → 空行
にもマッチするので、
^(\s| )+$
なのではないかと。。。
0059デフォルトの名無しさん
2005/12/16(金) 11:52:47有難うございます。
入力フォームで、ようするに何も入力しない場合や、
スペースのみの場合を弾きたかったので、
^$ → 空行 でマッチしてもOKでした。
^[\s ]*$ ならば、未入力のケースと
スペースのみの場合、両方マッチできました。
0060デフォルトの名無しさん
2005/12/19(月) 13:56:19xx<tag val="xxx">xxx</tag>
************************
こんな文字列があったとして
<>で囲まれている部分のみをマッチングするのは
<.+?>
ですが、その逆の囲まれていない部分のみをマッチングするには
どうしたらいいでしょうか。
0061デフォルトの名無しさん
2005/12/19(月) 14:25:34これじゃいかんの?
~$ perl -e '$var="xx<tag val=\"xxx\">xxx<\/tag>"; $var=~s/<.+?>//g); print "$var\n";'
xxxxx
006260
2005/12/19(月) 14:32:26006360
2005/12/19(月) 14:36:17************************
xx<tag val="xxx">xxx</tag>
************************
の<>で囲まれた部分は維持したまま
囲まれていない部分をreplaceする必要があるのです。
0064デフォルトの名無しさん
2005/12/19(月) 14:37:24sed -e 's/[^<]*</置き換えたいもの</ -e 's/[^<]*/置き換えたいもの/'
みたいな感じでは?
0065デフォルトの名無しさん
2005/12/19(月) 14:50:09006660
2005/12/19(月) 14:50:54しかし、たとえば
************************
xxx<tag val="xxx">xxx_xxx</tag>
************************
の<>で囲まれていない"xxx" を"yyy"にreplaceしようとすると
************************
yyy<tag val="xxx">xxx_yyy</tag>
************************
となってしまいます。
0067デフォルトの名無しさん
2005/12/19(月) 15:19:59自分が買った本に、”0〜255”の正規表現が載っていたYO。
[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]
0068デフォルトの名無しさん
2005/12/19(月) 16:02:14一般的に「ほげほげでない」条件の正規表現はめんどくさいのだが、今回の場合は
文字列の先頭または「>」 と 「<」または文字列の最後 にはさまれた部分と
考えれば簡単だ。
0069デフォルトの名無しさん
2005/12/19(月) 16:50:26http://www.din.or.jp/%7Eohzaki/regex.htm#ReplaceOutside
O崎さんすら3度も書き換えてる!むずいんだ。
~$ perl -e '$var="xx<tag val1=\"xxx\">xxx<\/tag>xx<tag val2=\"xxx\">xxx<\/tag>xx"; $var =~ s/(?:^|(?<=>))(.*?)(?:$|(?=<))/yyy/g; print $var, "\n";'
yyy<tag val1="xxx">yyy</tag>yyy<tag val2="xxx">yyy</tag>yyy
0070デフォルトの名無しさん
2005/12/19(月) 16:56:17だけど
2002/10/21 「タグの外側だけ対象に置換する」スクリプトと文章追加
の最後に書いてある解決法、理解できん。
0071デフォルトの名無しさん
2005/12/19(月) 23:10:18まさかぐぐりもしないで質問したんだろうか?
0072デフォルトの名無しさん
2005/12/20(火) 01:18:47検索がお上手ですね
、とでもいってほしいのか?
0073デフォルトの名無しさん
2005/12/20(火) 09:52:150075デフォルトの名無しさん
2005/12/20(火) 10:17:03007660
2005/12/20(火) 12:12:14以下のようにしました。
<?php
$str = 'xxx1<tag val="xxx2">xxx3</tag><tag val="xxx4">xxx5_xxx6</tag>xxx7';
$search = 'xxx';
$replace = 'yyy';
$search = '([^<]*)'.$search;
$replace = '$1'.$replace;
$str = preg_replace ('/'.$search.'/',$replace,$str);
while ( preg_match('/>'.$search.'/',$str) )
{
$str = preg_replace ('/>'.$search.'/','>'.$replace,$str);
}
echo $str;
/* output
yyy1<tag val="xxx2">yyy3</tag><tag val="xxx4">yyy5_yyy6</tag>yyy7
*/
?>
0077デフォルトの名無しさん
2005/12/20(火) 13:50:52だったなら、最初からスクリプトのスレに行けばいいじゃんかよ...
0078デフォルトの名無しさん
2005/12/20(火) 22:54:110079デフォルトの名無しさん
2005/12/21(水) 02:31:14正規表現だけじゃ解決できなかったっていう話しですよ。
内容ちゃんと理解してからレスしてね。
粘着質な自治厨さん。
008077
2005/12/21(水) 03:41:09「行ったら楽だったのでは」と読み替えてくれ。
ある問題につきあたったとき、それをなぜ正規表現の範囲で解決しなければ
ならないと考える人が多いのか、不思議なんだよ。悪い意味のコダワリなのでは。
実際、最初に問題が提示されてから解決まで丸1日もかかっていますよ。
それから「閉じている」というのは普及した技術用語で、ある技術や問題が特定の
範囲に囲い込まれている or 「〜だけで解決や表現できる」ことを意味します。
0081デフォルトの名無しさん
2005/12/21(水) 05:06:06ここが正規表現スレだからだろ
ご飯の炊き方スレでパンの焼き方解説してどうするんだよ
0082デフォルトの名無しさん
2005/12/21(水) 09:39:00スレタイ50000回声に出して嫁
0083デフォルトの名無しさん
2005/12/21(水) 09:57:11正規表現を記述しようと試みるのは愚の骨頂といえよう
0084デフォルトの名無しさん
2005/12/21(水) 10:04:290085デフォルトの名無しさん
2005/12/21(水) 10:05:44そういう戯言は他のスレで言って来い
0086デフォルトの名無しさん
2005/12/21(水) 12:11:410087デフォルトの名無しさん
2005/12/24(土) 04:34:200088デフォルトの名無しさん
2005/12/24(土) 07:55:09無理。
'2'を数の2にevaluateする仕組みが必ずどこかに必要。
桁数が有限なら自明な和(正規表現の|)で実現できるけど、実用にはならない。
0089デフォルトの名無しさん
2005/12/24(土) 11:11:26まぁその evaluate する仕組みなわけだが、Perl なら
print "$_ : ", /^(\d+)(??{"a{$1}"})\z/ ? 'match' : 'unmatch', ".\n"
for '2aa', '5aaaaa', '7aaa', '11aaaaaaaaaaa', 'aaaaa';
009087
2005/12/24(土) 18:59:20レスありがとうございます。
が,(??{"a{$1}"})のところがよくわかりませんでした。。
http://www.kt.rim.or.jp/~kbk/perl5.005/perlre.html
に少し解説してある拡張構文の(?{ code })を使われてると推測したのですが,
「??」と2個続くとどういう意味になるのでしょう?
0091デフォルトの名無しさん
2005/12/24(土) 19:17:47http://www.kt.rim.or.jp/~kbk/regex/regex.html#QUESTIONMIN
0092デフォルトの名無しさん
2005/12/24(土) 23:12:48違う。
>>90
http://www.kt.rim.or.jp/~kbk/perl-5.8/perlreref.html#_g_______extended_constructs_
0094デフォルトの名無しさん
2006/01/04(水) 16:38:50A) <a href="mailto:xxxxx">作者名</a>
B) 作者名
AとBの2パターンがあったとして、どちらにもマッチする方法で「作者名」だけを \1 に渡すにはどうしたらよいでしょうか?
^.*>(.*)<.*$ や ^[.*>|.*](.*)[.*<|.*]$ などとしているのですが、どうにも絞り込めません。
0095デフォルトの名無しさん
2006/01/04(水) 17:58:40言語は?
0096デフォルトの名無しさん
2006/01/04(水) 19:24:17とりあえず純粋正規表現(?)のみじゃね?
言語のパワーを借りないと無理っぽいけど
つーか、この仕様の書き方だと
C) <a href="http://xxxx">作者名</a>
のときは 『<a href="http://xxxx">作者名</a>』 が
作者名になるな。うん。
0097デフォルトの名無しさん
2006/01/04(水) 21:36:20XMLのスレには含めたくないみたい。
0098デフォルトの名無しさん
2006/01/06(金) 22:29:59string text = "<a href=\"mailto:xxxxx\">作者名</a>\r\n作者名";
Regex re = new Regex("(^.*>(?<name>.+)<.*$)|(^(?<name>.+)$)", RegexOptions.MultiLine);
foreach(Match m in re.Matches(text)){
Console.WriteLine(m.Groups["name"].Value);
}
0099デフォルトの名無しさん
2006/01/19(木) 18:08:30$_ = 'jvmv log:99jikvdglog:100bmvkllog:200';
s/.*log:(\d+).*/$1/;
print $_;
これだと最長一致してしまうので、200が表示されます。
s/.*log:(\d+)?.*/$1/; としてみましたがだめでした。
最初の 99 を取るにはどうしたら良いのでしょうか?
0100デフォルトの名無しさん
2006/01/19(木) 18:42:010101デフォルトの名無しさん
2006/01/19(木) 18:57:200103デフォルトの名無しさん
2006/01/26(木) 12:19:36先頭に#のついたコメント行と空白行以外を
正規表現でgrepしてマッチさせたいのですが
除外したいものだけの検索は
^[ |\t]*[#|\n]
で出来たのですが、それを否定した行を
マッチさせるにはどうしたらいいでしょうか?
0104デフォルトの名無しさん
2006/01/26(木) 12:51:52grep -v
0105デフォルトの名無しさん
2006/01/26(木) 13:45:25> 除外したいものだけの検索
HmJre.dll の機能では恐らく無理。
秀丸エディタスレ Part13
http://pc7.2ch.net/test/read.cgi/software/1135470265/
0106デフォルトの名無しさん
2006/01/26(木) 13:46:46求めるのは難しい。たいてい正規表現にマッチするものに対して
なんかする機能とマッチしないものに対してなんかやる機能は対に
なってるものだが秀丸にはないんですかね?
たとえばgrepだと-vフラグでマッチしない行の表示になるし、viだと
g//〜とv//〜があるわけですが。
0107デフォルトの名無しさん
2006/01/26(木) 14:03:13メンドーだけど
^[ |\t]*[a-zA-Z0-9記号羅列・・・・(#以外)]
でやってしまいます。
0108デフォルトの名無しさん
2006/01/26(木) 15:52:320109デフォルトの名無しさん
2006/01/26(木) 15:53:050110デフォルトの名無しさん
2006/01/26(木) 16:30:090111デフォルトの名無しさん
2006/01/26(木) 16:46:320112デフォルトの名無しさん
2006/01/26(木) 16:50:030113デフォルトの名無しさん
2006/01/26(木) 21:21:530114デフォルトの名無しさん
2006/01/27(金) 01:00:420115デフォルトの名無しさん
2006/01/27(金) 01:48:290116デフォルトの名無しさん
2006/01/27(金) 10:07:210117デフォルトの名無しさん
2006/01/27(金) 20:47:11・POSIX
・XML Schema
ぐらいかねえ。あとはプログラミング言語やツール依存。
0118デフォルトの名無しさん
2006/01/27(金) 21:26:250119デフォルトの名無しさん
2006/01/27(金) 21:28:500120デフォルトの名無しさん
2006/01/27(金) 23:54:55デフォで最長一致にならんのが普通って状況。
0121デフォルトの名無しさん
2006/01/28(土) 01:04:080122デフォルトの名無しさん
2006/01/29(日) 00:11:400123デフォルトの名無しさん
2006/01/29(日) 21:39:19文末の/が.*に吸収されてしまいます。
これを改善する方法は無いでしょうか?
値の例:(aaは任意の値で、/を含むことがある)
aa
/aa
aa/
/aa/
作ってみた表現:(PHP)
preg_replace("/^\/?(.*)\/?$/", "\\1", $str);
結果:
/aa -> aa
/aa/ -> aa/
0124123
2006/01/29(日) 21:52:12preg_replace("/^\/?(.*?)\/?$/", "\\1", $str);
で、何故か大丈夫でした。
理屈が分かりませんが・・・
0125デフォルトの名無しさん
2006/01/29(日) 22:43:36str.replace(/^\/|\/$/g, "")
か
str.replace(/^\/?(.*?)\/?$/, "$1")
でうまくいった。
0126デフォルトの名無しさん
2006/01/29(日) 23:17:46ましてPerl互換のエンジンの場合は全ての解を求めない。
0127デフォルトの名無しさん
2006/01/29(日) 23:29:540128デフォルトの名無しさん
2006/01/31(火) 12:34:39とか言うやつは卑怯者
0129デフォルトの名無しさん
2006/01/31(火) 17:32:48それで?
だからなに?
0130デフォルトの名無しさん
2006/01/31(火) 20:20:48while (! WScript.StdIn.AtEndOfStream) {
if (/((それ)?で|だから(なに)?)\?/.test(WScript.StdIn.ReadLine()))
WScript.StdOut.WriteLine("卑怯者");
else
WScript.StdOut.WriteLine("not 卑怯者");
}
D:\>cscript //nologo sorededakaranani.js
で?
not 卑怯者
それで?
not 卑怯者
だからなに?
not 卑怯者
^Z
D:\>
0131デフォルトの名無しさん
2006/01/31(火) 21:38:22?が全角になってるから。
つまりもっと卑怯者
0132デフォルトの名無しさん
2006/01/31(火) 23:16:470133デフォルトの名無しさん
2006/01/31(火) 23:32:440134デフォルトの名無しさん
2006/02/01(水) 09:49:540135デフォルトの名無しさん
2006/02/01(水) 21:21:21"/\\A[^\"]*\"/i"
にしてもマッチしませんですた
PHPでつ
0136デフォルトの名無しさん
2006/02/01(水) 21:39:21"/\\\\A[^\"]*\"/i"
0137デフォルトの名無しさん
2006/02/01(水) 23:55:12基本のようですね、丁寧にありがとうございますた(;´Д`)
0138デフォルトの名無しさん
2006/02/02(木) 09:44:43preg_ を " で書くと気が狂いそうになる
0139デフォルトの名無しさん
2006/02/02(木) 14:09:070140デフォルトの名無しさん
2006/02/02(木) 16:11:04みたいなデータがあるとき、Rubyの正規表現で
発言者と発言を取り出すにはどうやればいいんでしょうか?
(.+)「(.+)」$でやってみたのですが、無理だったので。
0141デフォルトの名無しさん
2006/02/02(木) 16:19:53それでいけるはず。
ただ、文字コードが合ってないとまずいかも。
例えばマッチ対象文字列が EUC-JP なら /(.+)「(.+)」$/e みたいにする。
あるいは、 $KCODE = 'e' するとか、コマンドラインオプションで -Ke するとか。
0142デフォルトの名無しさん
2006/02/02(木) 16:45:27文字コード、確かにEUCです。
早速やってみます。有難うございます。
0143デフォルトの名無しさん
2006/02/02(木) 17:24:11通常のhttp〜もリンクできるとなおいいです。
0144デフォルトの名無しさん
2006/02/02(木) 17:41:390145デフォルトの名無しさん
2006/02/04(土) 17:11:100146デフォルトの名無しさん
2006/02/04(土) 17:46:32/^/はあらゆる行にマッチすると思います。
0147デフォルトの名無しさん
2006/02/04(土) 18:54:23禅問答か何か?
0148デフォルトの名無しさん
2006/02/04(土) 21:21:570149デフォルトの名無しさん
2006/02/04(土) 22:52:51存 っ
在 行
し い
ま な
す の
か 行 頭
0150デフォルトの名無しさん
2006/02/04(土) 23:06:200151デフォルトの名無しさん
2006/02/04(土) 23:16:290152デフォルトの名無しさん
2006/02/04(土) 23:19:040153デフォルトの名無しさん
2006/02/04(土) 23:21:450154デフォルトの名無しさん
2006/02/04(土) 23:24:080155デフォルトの名無しさん
2006/02/04(土) 23:55:310156デフォルトの名無しさん
2006/02/04(土) 23:59:380157デフォルトの名無しさん
2006/02/05(日) 00:02:370158・∀・)っ-○●◎- ◆Pu/ODYSSEY
2006/02/05(日) 00:11:470159デフォルトの名無しさん
2006/02/05(日) 00:15:200160酩酊 ◆TWARamEjuA
2006/02/05(日) 00:17:050161デフォルトの名無しさん
2006/02/05(日) 00:27:28静止した観測者からそう見えるだけだな。
相対性の問題だ。
0162デフォルトの名無しさん
2006/02/05(日) 00:47:380163デフォルトの名無しさん
2006/02/05(日) 01:12:39| ……
| ('A`)
/ ̄ノ( ヘヘ ̄ ̄
↑
行末
0164デフォルトの名無しさん
2006/02/05(日) 08:17:12やったな、おい!大漁じゃねーか!
0165デフォルトの名無しさん
2006/02/05(日) 12:01:190166デフォルトの名無しさん
2006/02/05(日) 12:43:380167デフォルトの名無しさん
2006/02/05(日) 15:14:31たとえばこんなのを全部検索したい
「男と女の〜」
「その女が男の〜〜」
0168・∀・)っ-○●◎- ◆Pu/ODYSSEY
2006/02/05(日) 15:25:160169デフォルトの名無しさん
2006/02/05(日) 17:19:26の
無
い
と 思 う の 文
う だ
ろ が
だ 、
う 実
ど は 際
0170・∀・)っ-○●◎- ◆Pu/ODYSSEY
2006/02/05(日) 17:36:450171・∀・)っ-○●◎- ◆Pu/ODYSSEY
2006/02/05(日) 17:36:590172デフォルトの名無しさん
2006/02/05(日) 17:42:431個進むのと2個進むやつ?
0173・∀・)っ-○●◎- ◆Pu/ODYSSEY
2006/02/05(日) 18:10:41たしかそれ。
0174デフォルトの名無しさん
2006/02/05(日) 19:10:19どういうの?
後学のために教えてプリーズ
0175デフォルトの名無しさん
2006/02/05(日) 19:15:49単方向リストで、片一方を一度に1個、
もう片一方を一度に2個進めて、
2個進めたほうがNULLにあたればループしていない。
逆に1個進めたほうと2個進めたほうが途中で同じ値になればループしているとか、
そんな感じだったと記憶している。
int isLoop(List*a){
List*b=a;
if(b)
while((b=b->next) != NULL && (b=b->next) != NULL && a!=b && (a=a->next)!=b){}
return b != NULL;
}
0176デフォルトの名無しさん
2006/02/07(火) 22:10:12かなり複雑な仕様で、ある文字列に次の文字がある場合に、
その文字を接頭語とする単語として区切ってStringの配列で返したいです。
# X \ \+ \- + -
#123\+123 とあれば、#123と\+123の2単語に分けます。
また、文字列に半角スペースがあれば、
そのまま連続する半角スペースを文字列として返します。
もうあと少しなのですが、うまくいきません。
"TOP\+123+123 \-123-123\" という文字列がある場合に、
以下のようになってしまいます。
"TOP"
"\"
"+123"
"+123"
" "
"\-123"
"-123"
"\"
0177デフォルトの名無しさん
2006/02/07(火) 22:11:45"TOP"
"\+123"
"+123"
" "
"\-123"
"-123"
"\"
どこを変えればよいのでしょうか?6時間やってますがダメです…
0178デフォルトの名無しさん
2006/02/07(火) 22:13:12String source = "TOP\\+123+123\\-123-123";
ArrayList list = new ArrayList();
Pattern p = Pattern.compile("(\\G[^X#\\+\\-\\\\ ]+)|(\\G\\\\-[^X#\\+\\-\\\\ ]*)|(\\G\\\\+[^X#\\+\\-\\\\ ]*)|(\\GX[^X#\\+\\-\\\\ ]*)|(\\G#[^X#\\+\\-\\\\ ]*)|(\\G\\+[^X#\\+\\-\\\\ ]*)|(\\G\\-[^X#\\+\\-\\\\ ]*)|(\\G\\\\[^X#\\+\\-\\\\ ]*)|\\G +");
Matcher m = p.matcher(source);
while (m.find()) {
String s = m.group(0);
int lastIndex = list.size() - 1;
if (s.equals(" ") && lastIndex >= 0 && !list.get(lastIndex).equals(" ")) {
list.set(lastIndex, list.get(lastIndex) + s);
} else {
list.add(s);
}
System.out.println("\"" + s + "\"");
}
0179デフォルトの名無しさん
2006/02/07(火) 22:59:14import java.util.*;
import java.util.regex.*;
class a{
static public void main(String[]args){
ArrayList<String> list = new ArrayList<String>();
Pattern p = Pattern.compile("\\ +|(\\\\[\\+\\-]?|[+#X-])[^\\\\ +#X-]*|[^\\\\ +#X-]+");
Matcher m = p.matcher("TOP\\+123+123 \\-123-123\\");
while(m.find())list.add(m.group());
for(String s:list)
java.lang.System.out.println("\""+s+"\"");
}
}
0181デフォルトの名無しさん
2006/02/08(水) 00:32:26Java はまったくわかりませんが、
>\+がうまくいかないです。
の参考になるかもしれないので、名前だけ Java に似てる JavaScript で書いてみました。
javascript:alert('\"'+'TOP\\+123+123 \\-123-123\\'.match(/((^| +|#|X|\\?\+|\\?-|\\)[^\3]*?)(?= |#|X|\\?\+|\\?-|\\|$)/g).join('\"\n\"')+'\"\n');
ブラウザのアドレスバーに入れると確認できます。
0182176
2006/02/08(水) 09:42:59できました!すばらしいです。空白の扱いもあっています。連続した空白を1つの単語とします。
あと、ちょっと言いにくいんですが、それに加えて、
'abc' のようにシングルクォーテーションで区切られる文字も1つの単語としたいんですが…
但し、!'とあった場合は、'を文字列とします。!はエスケープです。
因みに、私もおととい正規表現を知ったばかりです。。。
>>181
これもできました。JavaScriptでもできるんですね。参考になりました。
0183179
2006/02/08(水) 10:59:21'ABC'が一つの単語になるのは分かった。
しかし、 !' の扱いが分からん。
!'は'XXX'の内部で発生するのか、それとも外部でも発生するのか?
つまり
ABC 'DEF' !' e
みたいに単独で!'が出る可能性があるのかどうか?
それとも
ABC 'ff!'df'のようにシングルクウォーテーションの内部で出るのか?
どっちかによって答えが変わるから。
それと、この次に仕様の追加があったらもう答えないからな。
0184179
2006/02/08(水) 11:11:47違っていた場合はもう知らね。
自分の前に書いたコードから正規表現の部分だけ変えてくれ。
"'(!'|[^'])*'|\\ +|(\\\\[\\+\\-]?|[+#X-])[^'\\\\ +#X-]*|[^'\\\\ +#X-]+"
文字列のマッチしかしないんで!'の置換は適当にString.replaceでも呼んでやっといてくれ。
0185デフォルトの名無しさん
2006/02/08(水) 11:21:35>違っていた場合はもう知らね。
え〜、そんなこと言わないでくださいよぉ〜
なんて言って欲しそうな臭いがプンプンするな。その文章・・・
0186デフォルトの名無しさん
2006/02/08(水) 11:27:17いや、単純に飽きた。
Javaが初めてだから、ドキュメント読みながら入門サイトで調べてるし、
正規表現もさっぱりだから調べたりしてる。
が、なんで他人の正規表現のために、
使ったこともないし使う予定も無い言語を勉強しなきゃならんねん気分で根気的に限界
0187176
2006/02/08(水) 13:10:16マジ有難う… 動いたっス。もう仕様追加しないっす。
正直うれしいです。
#実はもうちょっとだけありますが、後はこっちでやります。
0188デフォルトの名無しさん
2006/02/08(水) 13:33:140189176
2006/02/08(水) 16:04:38''の中に日本語・記号等全ての半角・全角文字を使えるようにするには
どうしたら良いでしょうか?3時間やりましたがダメでした…
\p{}でゴリゴリやるんでしょうか?
0190デフォルトの名無しさん
2006/02/08(水) 16:23:16空気嫁
親切にしてくれた人のこと考えろや・・・
0191デフォルトの名無しさん
2006/02/09(木) 00:35:18地道にゴリゴリやりたくなる。
0192デフォルトの名無しさん
2006/02/09(木) 01:10:14タバコ吸いながらボーっと考えるのが好きだな
それで簡潔で美しいのが思いついたら
オレ脳内でオレが神になるその瞬間が好き
0193デフォルトの名無しさん
2006/02/09(木) 10:00:200194デフォルトの名無しさん
2006/02/09(木) 15:52:13read(FILE,$buffer,6)
$buffer =~s/([\xA1A1-\xFEFE]|\x8E[\xA1-\xDF])\xA3\x0C|\x1B([\xA1A1-\xFEFE]|\x8E[\xA1-\xDF])/$1\n$2/g;
(一部分のみ)
の場合”不気味”にひっかかったり”ィ”にひっかかったりします
・・・
何かいい表現はないかなと思って詮索してみましたが分からないのでお力借りたいですorz
文字コードはEUCで1バイト文字も混在してます
0195デフォルトの名無しさん
2006/02/09(木) 16:03:50http://www.din.or.jp/~ohzaki/perl.htm#JP_Match
0196デフォルトの名無しさん
2006/02/09(木) 16:27:31レスどもです
熟読してきます
0197デフォルトの名無しさん
2006/02/09(木) 20:06:58参考にはならないと思いますが書いてみました。(←すこしニュアンスを変えました)
javascript:alert('\"'+'TOP\\+123+123Xab!\'c \\-123\'d#e!\'f\\+g-hXi\'-123\\'.match(/'(!'|.)*?('|$)|(!'| +|#|X|\\?\+|\\?-|\\|.)(!'|.)*?(?='| |#|X|\\?\+|\\?-|\\|$)/g).join('\"\n\"')+'\"\n\n'+RegExp.input);
>>187
>#実はもうちょっとだけありますが、後はこっちでやります。
禁句です。あるなら質問する。そうでなければ黙っとくことをお勧めします。
0198デフォルトの名無しさん
2006/02/09(木) 20:19:230199デフォルトの名無しさん
2006/02/09(木) 21:49:18独特なので戸惑う。
\w とか .* とかは使えないし。
せめて.NetのSystem.Text.RegularExpressionsの正規表現が通るように
なればなあと。
0200いいともの客
2006/02/09(木) 23:36:000201デフォルトの名無しさん
2006/02/09(木) 23:43:260202デフォルトの名無しさん
2006/02/10(金) 01:00:24それ、VS 2005 でも改善されてないんだっけ?
0203・∀・)っ-○●◎- ◆Pu/ODYSSEY
2006/02/10(金) 01:10:380204デフォルトの名無しさん
2006/02/10(金) 01:17:13改善する気がないようです
0205デフォルトの名無しさん
2006/02/10(金) 23:29:280206デフォルトの名無しさん
2006/02/13(月) 09:35:15正規表現ポケットリファレンス
http://www.gihyo.co.jp/books/syoseki-contents.php/4-7741-2671-3
0207デフォルトの名無しさん
2006/02/15(水) 13:09:10んでp.25の時刻の正規表現のやつで
(1[012]|[1-9]):[0-5][0-9] (am|pm)
とあったので試しましたが
$ echo "1:23 am" | egrep '(1[012]|[1-9]):[0-5][0-9] (am|pm)'
1:23 am
$ echo "11:23 am" | egrep '(1[012]|[1-9]):[0-5][0-9] (am|pm)'
11:23 am
$ echo "31:23 am" | egrep '(1[012]|[1-9]):[0-5][0-9] (am|pm)'
31:23 am
$ egrep --version
egrep (GNU grep) 2.5.1
となって困ってます。どこ間違ってますか?
0208デフォルトの名無しさん
2006/02/15(水) 13:33:27(1[012]|0[1-9]):[0-5][0-9] (am|pm)
^^
0209デフォルトの名無しさん
2006/02/15(水) 13:40:2331:23 am のうち1以降がマッチしてるのでマッチした行が出力される
0210デフォルトの名無しさん
2006/02/15(水) 14:01:37"9:17 am" や "12:30 pm" のような時刻にマッチする正規表現としてたとえば
[0-9]?[0-9]:[0-9][0-9] (am|pm)
を考えてみた場合、一応マッチはするが "99:99 pm" といった無意味な時刻にもマッチしてしまう。
そこで、時として取りうる1桁と2桁の部分をうまく狭めて
(1[012]|[1-9])][0-5][0-9] (am|pm)
とすればよい。
と、概論の章のこんな内容。第2版第1刷だが。
>>209
だな。狭め方が説明のために端折られてて足りないだけに見える。
catとvacationの例のと同じ。説明不足で惜しいと見るか序章概論上妥当と見るかは悩ましいところか。
0211デフォルトの名無しさん
2006/02/19(日) 02:38:090212・∀・)っ-○●◎- ◆Pu/ODYSSEY
2006/02/19(日) 02:47:32いっぺん独自実装を試みたことがある。
0213デフォルトの名無しさん
2006/02/19(日) 03:48:37いっぺん独自実装を試みたことがある。
0214デフォルトの名無しさん
2006/02/19(日) 08:29:070215デフォルトの名無しさん
2006/02/19(日) 10:50:200216デフォルトの名無しさん
2006/02/19(日) 11:53:35邦訳の曖昧さが気になれば原書当たればいいし
0217デフォルトの名無しさん
2006/02/19(日) 12:06:15邦訳が曖昧な場合は得てして原文も曖昧。
文学作品じゃないんで。
0218デフォルトの名無しさん
2006/02/19(日) 12:39:260219デフォルトの名無しさん
2006/02/19(日) 13:08:26あたまわるいなあ
邦訳が曖昧な場合
概念からして曖昧なのかどうかなんて
原文見ないとそもそもわからんだろ
0220デフォルトの名無しさん
2006/02/19(日) 14:03:45訳者の理解が足りない場合が圧倒的に多いだろ
0221デフォルトの名無しさん
2006/02/19(日) 14:29:47かたやお前らは受験勉強程度の翻訳力しかない。
どうあがいても訳者と同じかそれ以下の翻訳しかできないのが常。
↓
結局、前後の文脈から読み解くわけだが、
その文脈範囲を広く取ることでなんとか判ったような気になる。
↓
英文読解時の前後文脈を広く取るハメになったことがなぜか訳者のせいになる。
↓
訳者の理解が足りないニダ
0222デフォルトの名無しさん
2006/02/19(日) 14:32:50要するに、
意訳・補足を入れてくれないような不親切な翻訳は認めない
ってことだろ、お前らw
0223デフォルトの名無しさん
2006/02/19(日) 14:34:43たしかにウンコ以下だな
0224デフォルトの名無しさん
2006/02/19(日) 14:42:43実際には、日本語の文章に日常的に曖昧文・乱文があるのと同じように、
英語の文章にも日常的に同じものがあることを理解できない。
なぜなら、お前らは日本語文章しか良し悪しを判断する対象にできないからだ。
つまり、馬鹿ということだ。
0225デフォルトの名無しさん
2006/02/19(日) 14:43:28文枝もいることだし
0226デフォルトの名無しさん
2006/02/19(日) 14:50:57例えば新聞記事や著名な文学作品。
だが、お前らが実社会で接することになるのは、
文豪でもなんでもないお前らと同様、文豪でもなんでもない外国の一般人の文章だ。
偉そうに翻訳を貶める輩に限って外国人とメールのやり取りをしたことがなかったりする。
0227デフォルトの名無しさん
2006/02/19(日) 15:01:530228デフォルトの名無しさん
2006/02/19(日) 15:02:300229・∀・)っ-○●◎- ◆Pu/ODYSSEY
2006/02/19(日) 15:41:150230デフォルトの名無しさん
2006/02/19(日) 16:11:090231デフォルトの名無しさん
2006/02/19(日) 16:38:180232デフォルトの名無しさん
2006/02/19(日) 17:43:270233デフォルトの名無しさん
2006/02/19(日) 18:48:59同意
0234デフォルトの名無しさん
2006/02/19(日) 22:43:00違うよ。翻訳は不要だってことだ。
0235デフォルトの名無しさん
2006/02/20(月) 00:36:46ドラゴンブックだけ読めば実装できたから。
0236デフォルトの名無しさん
2006/02/20(月) 01:49:33正規表現むずかくてなかなか思い通りにいきません。
ABCDEFG{HIJ}KLMN
→{HIJ}
としたい場合どうやればよいのでしょうか?
0237・∀・)っ-○●◎- ◆Pu/ODYSSEY
2006/02/20(月) 01:55:17{}がどう解釈されるかにもよるが。
0238236
2006/02/20(月) 02:36:15すいません。質問が悪かったです。
{}は複数出てくるんです。
ABCDEFG{HIJ}KLMN{OPQ}RSTU
といった感じです。
よろしくお願いします。
0239デフォルトの名無しさん
2006/02/20(月) 02:39:14答えの質も悪いから
ABCDEFG{H{I}J}KLMN{OPQ}RSTU
ってのもあるか聞かせてくれ。
0240236
2006/02/20(月) 02:46:11無いです。
これを気に正規表現を勉強しようと色々調べて
こんな感じかと思ったのですが
\{[^\}]*
後ろのの}がこれじゃひっかかりません。
すいませんがよろしくお願いします。
0241デフォルトの名無しさん
2006/02/20(月) 02:52:23Perl ならこんな感じかなあ。
my $str = "ABCDEFG{HIJ}KLMN{OPQ}RSTU";
my @m = $str =~ /(\{[^\}]+\})/g;
0242236
2006/02/20(月) 03:11:09教えてくれた通りで無事できました。
助かりました。どうもありがとうございました。
0243デフォルトの名無しさん
2006/02/20(月) 17:43:37(`・ω・´) いえいえ どういたしまして
0244デフォルトの名無しさん
2006/02/20(月) 19:33:50わかんなかったらここで聞こうと思ってたけど、
案外簡単にできちゃうから聞くこと無いやw
0245デフォルトの名無しさん
2006/02/20(月) 21:36:230246pp
2006/02/22(水) 22:35:51以下の表現の意味がわかりません。特に ">><<" の部分
どのたか解るかた教えてください。
s/\([A-Za-z]\)\([']\)/\1>><<\2/g
s/\([']\)\([ A-Za-z]\)/>><<\1\2/g
s/\([A-Za-z]\)\([-,.:;']\)\([ A-Za-z]\)/\1>><<\2\3/g
s/\([A-Za-z]\)\([-,.:;']\)$/\1>><<\2/g
s/>><</ /g
0247デフォルトの名無しさん
2006/02/22(水) 22:42:380248デフォルトの名無しさん
2006/02/22(水) 22:44:15ABC' => ABC>><<'
ってな感じと思うよ。
0249デフォルトの名無しさん
2006/02/22(水) 22:58:09「>><<」っていう特殊な正規表現があるわけじゃなくて、
仮にいったん「>><<」という文字列に置き換えておいて、
最後に「>><<」をまとめて目的の文字列に置換しているんだと思う。
普通のテキストに出てこなそうな文字列なら
「>><<」じゃなくてもどんな文字列でも良かったと思われ。
0250pp
2006/02/22(水) 23:21:19言われてみればそんな気がしてきました。
幾つかの文字列パターンを作って実際に試してみます。
0251sage
2006/02/22(水) 23:33:07例がおかしかった。
○ A' => A>><<'
っす。スマソ
0252・∀・)っ-○●◎- ◆Pu/ODYSSEY
2006/02/22(水) 23:51:250253デフォルトの名無しさん
2006/02/23(木) 00:24:040254デフォルトの名無しさん
2006/02/23(木) 02:18:040255デフォルトの名無しさん
2006/02/23(木) 11:46:59こいつか?
書き込んでる内容を見るとワナビーのようだが
0256デフォルトの名無しさん
2006/02/23(木) 11:58:54s/ちんこ/まんこ/k こうですか?わかりません!><
0257デフォルトの名無しさん
2006/02/23(木) 13:41:250258デフォルトの名無しさん
2006/02/23(木) 14:38:260259デフォルトの名無しさん
2006/03/01(水) 17:19:38テキストフィールドの中身が改行文字とスペースのみで構成されたデータをピックアップしたいのです。
この場合、どう書いたらいいですか?
0260デフォルトの名無しさん
2006/03/01(水) 22:56:47びちびちウンコ
下痢便
かちかちウンコ
巻き巻きウンコ
ウンチッチ
ふつうウンコ
野グソ
犬ウンコ
という文字列があったとして、「ウンコを含む文字列にマッチ、ただし『かちかちウンコ』は除く」
という指定はどうやったらいいでしょうか?
びちびちウンコ
巻き巻きウンコ
ふつうウンコ
犬ウンコ
だけを抜き出したいです。
0261デフォルトの名無しさん
2006/03/01(水) 23:27:57.,,::'゙;'''""''゙''''゙゙""''ニ=;;;;..`.、
lッ'゙ ゙;;;;;;::.,,、
/´_,,,.. ..,,,_ ゙{;;;;;;;i
f''"゙ 、 . ' ゙゙゙"` 'i;;;f ヽ
l ;-。= .} =。-、 |:;l .;:!
}  ̄ ;  ̄ 1{ bl
!、 .,��.,,,,、 ノ 、ソ
'i ' `゛ ` i;;; ここは俺のスレ。
ヽ _,.=ニニニ=__,、 ' l;;' 俺に (*´Д`)ハァハァ すればいい
i `¬―'´ ノ |
'i, ,/ |
)`ー---― '
0262デフォルトの名無しさん
2006/03/01(水) 23:58:02(?!かちかち)ウンコ
0263・∀・)っ-○●◎- ◆Pu/ODYSSEY
2006/03/02(木) 00:02:160264デフォルトの名無しさん
2006/03/02(木) 00:21:100265デフォルトの名無しさん
2006/03/02(木) 17:38:220266デフォルトの名無しさん
2006/03/02(木) 21:49:110267デフォルトの名無しさん
2006/03/02(木) 21:50:470268デフォルトの名無しさん
2006/03/02(木) 23:57:27if ((/ウンコ/) && ($_ ne "かちかちウンコ")) {
}
0269デフォルトの名無しさん
2006/03/03(金) 00:45:38続けるとしたら実装方式とかパッチの当て方とかそっち方面だな。
0270・∀・)っ-○●◎- ◆Pu/ODYSSEY
2006/03/03(金) 00:46:380271デフォルトの名無しさん
2006/03/03(金) 09:50:44誤爆?
0272デフォルトの名無しさん
2006/03/03(金) 12:43:57それなんてプロバイダ?
普通使えね?
0273デフォルトの名無しさん
2006/03/03(金) 12:47:24それなんてプロバイダ?
0274デフォルトの名無しさん
2006/03/08(水) 10:44:19(syslog-ngでの進入検知スクリプト)
Mar 8 10:22:01 host01 ftp(pam_unix)[8094]: authentication failure; logname= uid=0 euid=0 tty= ruser= rhost=201.201.101.101
というログを標準入力として、以下の通り処理を流すと
while ($data = <STDIN>) {
if ($data =~ /\s(\w+)\[.*\]:.*\[([\d\.]+)\]/){
$hack = $2;
if ($1 eq $ftpd) {
$port = 21;
}elsif ($1 eq $sshd) {
$port = 22;
}else{ next;}
という感じで$1がプログラム名、$2がIPになるはずらしいんですが
どうもそうなっていないようなんです。
正直さっぱりわからないんですが
正規表現をどう変えたらいいでしょうか。
0275デフォルトの名無しさん
2006/03/08(水) 11:06:18特に難しい機能を使っているわけでもないので一つずつ丹念に追えば
わかると思うが、これがさっぱりわからないんなら勉強が足りなすぎると
思われる。
0276デフォルトの名無しさん
2006/03/08(水) 12:49:57その気持ち悪い言語はもしや、Perlとか言うものか?
0277デフォルトの名無しさん
2006/03/08(水) 19:27:37var sshd = "ssh";
while (! WScript.StdIn.AtEndOfLine) {
var data = WScript.StdIn.ReadLine();
var port, hack;
if (/\s(\w+)\S+\:\s.*rhost=(\S+)/.test(data))
hack = RegExp.$2;
if (RegExp.$1 == ftpd)
port = 21;
else if (RegExp.$1 == sshd)
port = 22;
else
continue;
WScript.StdOut.WriteLine(port + ", " + hack);
}
0278デフォルトの名無しさん
2006/03/08(水) 19:54:39ftpd => 21,
sshd => 22,
};
while (my $data = <DATA>) {
if ($data =~ /\s(\w+)\S*?\[[^]]+\]:.*rhost=([\d\.]+)/) {
my ($port, $hack) = ($services->{$1}||$1, $2);
printf "%s\t%s\n", $port, $hack;
}
}
0279酩酊 ◆TWARamEjuA
NGNGsyslogのフォーマットなんてそうめったやたらと変わるもんじゃないと思うのです。
my ($date, $host, $message) = $line =~ m|([a-z]{3} \d+:\d+:\d+) (\w+) (.+)|;
程度で良いんじゃないかなぁ。
0280デフォルトの名無しさん
2006/03/08(水) 22:50:32相手が初心者だと思ってバカにしてるのかもしれないが、
せめてテストくらいしてからレスしろよな。
0282デフォルトの名無しさん
2006/03/08(水) 23:30:140283デフォルトの名無しさん
2006/03/08(水) 23:47:07ていうかね、元の質問では「接続元ホスト」と「ポート番号」を抽出したいんだと思うのだが、
>>279 はそのどちらもできてねー。
0284デフォルトの名無しさん
2006/03/09(木) 01:06:41過疎スレなんだから
0285デフォルトの名無しさん
2006/03/09(木) 10:58:58$ftpdと$sshdの条件にひっかからないだけ
なんて落ちじゃないよな?
0286デフォルトの名無しさん
2006/03/10(金) 01:08:44当方スパムフィルター用の正規表現を作ろうと画策中の素人ですが、
例えば"[email protected]"というアカウント以外の
全hotmailアカウントにマッチさせたい場合どのような表現が考えられるでしょうか?
ぼんくら頭で都合よく考えるに
^\\([^【1】]【2】.*\\)@hotmail.com
という表現の内の【1】の部分に任意の文字列("hogehoge")、
【2】の部分に"∧:and"にあたるメタ文字が
入いれば良いのではないかと想像したのですが、
そういう都合のいい表現はどうも無いようです。
ようするに基本的に理解できていないのですが、
煮詰まってしまって何も思い浮びません。
どうかひとつ御助力お願いいたします。
なお正規表現はEmacsのものです。
0287デフォルトの名無しさん
2006/03/10(金) 02:19:03あたまに hoge がついていて、 おしりに gz がついていない
というのを正規表現であらわしたいと思っています。
みんな、オラといっしょに考えてくれ!
0288・∀・)っ-○●◎- ◆Pu/ODYSSEY
2006/03/10(金) 02:28:570289デフォルトの名無しさん
2006/03/10(金) 06:20:17フィルター マッチングルール の検索結果 約 463 件中 1 - 50 件目 (0.47 秒)
0290デフォルトの名無しさん
2006/03/10(金) 10:26:01'hogegz' =~ /^hoge.*(?!gz)$/ は真になる。
.* が gz を食えばその後ろに gz は無く、行末に到達できるからだ。
^hoge.*(?<!gz)\z
0291286
2006/03/10(金) 22:23:43レスどうも。
私の検索結果とどうも違うようです。
フィルター マッチングルール の検索結果 約 1,110 件中 1 - 82 件目 (0.30秒)
それにこの検索結果の中には具体的な正規表現の話題は少ないようです。
それともなにか別のことを示唆されているのでしょうか。
問題を「任意の文字列を含まない」パターンに対するマッチングということにしぼってみました。
Perlにおける一般的な表現というのはあるサイトで見つけたのですが、
なるほどPOSIX準拠では煩雑になるのですね。
これまたとある別のサイトに正規表現を生成してくれるJavaスクリプトがあったので、
それで「"hoge"を含まない」行にマッチするものを作ってみたのですが…。
^(((((([^h]*)*(h+[^o][^h]*)*)*)*(h+o[^g][^h]*)*)*)*(h+og[^e][^h]*)*)*$
これをxyzzyで試してみたところ固まってしまいました(orz)ので
"hog"にして再び挑戦してみてやっと機能することが確認できました。
それでもたった10行ほどを検索するのに4、5秒かかります。
実用向きには私は何か全く別の方法を考えるべきなのでしょうか?
また、実用云々は抜きにしても、別のスマートな表現があれば教えていただければ幸いです。
0292・∀・)っ-○●◎- ◆Pu/ODYSSEY
2006/03/10(金) 23:12:44ものすごいバックトラックが起きそうですな。
0293デフォルトの名無しさん
2006/03/10(金) 23:43:520294デフォルトの名無しさん
2006/03/11(土) 01:29:31その正規表現、笑える。
頭の中でオートマトンがマンダラを描いて今にも爆発しそうです。
0295286
2006/03/11(土) 01:35:22やはりそうですか...orz。
例えば一番始めに考えたのは、"^.*@hotmail\\.com$"を全部ゴミ箱に移して、
その後"^hogehoge@hotmail\\.com$"だけ救出するという馬鹿みたいな方法だったのですが、
これはいくらなんでも鈍臭い気がしまして。
スパムフィルターの件についてはくだ質に行ってみます。
けれどこう言った表現は結構使う機会がありそうな気がするので、
後学の為に一般的にはどういうふうに解決するのかな、という興味があります。
あと最短一致とかも確かPerlにしかないんですよね。
これは無くても差し支えがない(あっても意味がない)、ということなんでしょうか?
それとも技術的に実装が難しいのでしょうか?
>>292>>294
なんとなくサグラダファミリアのようなハノイの塔を想像しました。
0296デフォルトの名無しさん
2006/03/11(土) 03:32:08ただ、スパムフィルターという性質を考慮すれば「^([^h]|.[^o]|..[^g]|...[^e]).*@hotmail.com$」くらいで十分実用的じゃないかということでもある。
メーラ選んで>>293にするのが理想なんだろうけど。
あと最短一致程度なら利用できない場合の方が少ないんじゃない?
0297デフォルトの名無しさん
2006/03/11(土) 03:39:340298デフォルトの名無しさん
2006/03/11(土) 10:39:38爆笑しました。そして固まりました。
>>295
一般的には、可読性を考慮して2パスにすると思うよ。
>>286
Emacs 使ったこと無いけど、エスケープは \ を2つ書くらしいことは分かりました。
javascript:(function(){var v='hogehoge';do{v=prompt('救済するユーザIDを入力してください。',v)}while(prompt(v+' さんだけを救済する削除対象マッチの正規表現を書いてみました。','^'+function(s){var x='',l=s.length;if(l>0)
{x='('+(l>1?'.{0,'+(l-1)+'}|':'')+'.{'+(l+1)+',}|'+function(s){var c=l-s.length;var x=(c?'.{'+c+'}':'')+'[^'+s.charAt(0)+']';if(s.length>1){var r=s.substr(1);x=arguments.callee(r)+'|'+x+r}return x}(s)+')'}return x}(v)+'@hotmail\\\\.com$'))})();
上のコードは、行を連結さえすれば... きっと動きます。
0299デフォルトの名無しさん
2006/03/11(土) 12:13:40さらに、文字の繰り返は * + ? しか見当たらない。orz
だとすると、
.{0,3} --> .?.?.?
.{5,} --> .....+
例えば、これが
^(.{0,3}|.{5,}|.{3}[^e]|.{2}[^g]e|.{1}[^o]ge|[^h]oge)$
こうなるってことかな?
^\\(.?.?.?\\|.....+\\|...[^e]\\|..[^g]e\\|.[^o]ge\\|[^h]oge\\)$
うん、おなかすいたから、これでいいことにしようっと。
0300デフォルトの名無しさん
2006/03/11(土) 15:15:19\\{0,3\\} とか \\{5,\\} とか書けば使えるよ。
0301286
2006/03/11(土) 15:53:42今ちょっと手が開きそうにないので、夜に確認してみたいと思います。
ありがとう、ありがとう。
0302レベル5デス
2006/03/11(土) 16:16:03○手が空く
0303デフォルトの名無しさん
2006/03/11(土) 16:45:202.としたら
マッチ 1000 10005 100056 1000567
アンマッチ 10002000
ということですか?
0304デフォルトの名無しさん
2006/03/11(土) 18:19:330305デフォルトの名無しさん
2006/03/12(日) 00:38:03^((?!文字列).)*$
でできるよ。
^((?!hogehoge).)*@hotmail.com$
0306デフォルトの名無しさん
2006/03/12(日) 00:40:29それを Emacs Lisp の正規表現で
0307デフォルトの名無しさん
2006/03/12(日) 00:46:02でもこの辺使えば何とかなるよ
0308デフォルトの名無しさん
2006/03/12(日) 08:50:44ありがとう。{ } も使えるんですね。
>>307
^(((?!hogehoge).){0,8}|.{9,})@hotmail\.com$
いや、そもそも ?! 使わずに...
って、もしや... Emacs で ?! 使えたりして? or2 <--おしりの形がちょとセクシー
0309デフォルトの名無しさん
2006/03/12(日) 22:03:38どういう方法がスマートでしょうか?
\nに{}は効かないようなので\n\n\n\nを\n\n\nに置換するのを数回繰り返すという
方法で誤魔化してます。
秀丸エディタでマクロに使いたいのですが。
0310デフォルトの名無しさん
2006/03/12(日) 22:35:550311デフォルトの名無しさん
2006/03/12(日) 22:43:58レスどうもです。
改行だと最長一致がうまくいかないのか、それも4つの改行が
マッチしたところで終わってしまうんですよ。
エディタ側の問題なんでしょうか。
0312デフォルトの名無しさん
2006/03/12(日) 23:33:30ttp://homepage2.nifty.com/jr-kun/hidemaru_qa/4_regulr.html#RETURNS
0313デフォルトの名無しさん
2006/03/12(日) 23:33:38その他(O) → 秀丸エディターヘルプ(P) → 検索系コマンド →
「\nを使った複数行検索の際の制限について」を読もう。
0314デフォルトの名無しさん
2006/03/13(月) 00:01:37お手数をおかけして申し訳ありませんでした。
0315デフォルトの名無しさん
2006/03/13(月) 21:43:22でも正規表現初心者です。
どこか解説サイトを教えてください。
言語ならperlがいいです。m(_ _)m
0316デフォルトの名無しさん
2006/03/14(火) 00:31:200317デフォルトの名無しさん
2006/03/14(火) 01:08:04ttp://perldoc.perl.org/perlretut.html
これでも読んで勉強しる。
0318デフォルトの名無しさん
2006/03/14(火) 01:15:14ありがとうございます。
できれば日本語で初心者向けを
おねがいします。m(_ _)m
0319デフォルトの名無しさん
2006/03/14(火) 02:11:33ほい、和訳。
http://www.kt.rim.or.jp/~kbk/perl-5.8/perlretut.html
0320デフォルトの名無しさん
2006/03/14(火) 09:11:44自分も最初、Webでやろうと思ったけど頭そんなに良くないからすぐ挫折した。
これ↓がいいと思うよ。
全て例題形式だから分かりやすかった。
正規表現ケーススタディブック:
http://www.amazon.co.jp/exec/obidos/ASIN/4839913870/
0321デフォルトの名無しさん
2006/03/14(火) 09:46:11そんな俺が最初に正規表現に触れたのは「sed は日暮れて」だった。
0322デフォルトの名無しさん
2006/03/14(火) 10:07:370323デフォルトの名無しさん
2006/03/14(火) 15:06:27本読んだら ^((?!文字列).)*$ が思い浮かぶか
といったらそうでもない。
売られている正規表現本ってただのパターン集じゃん。
0324デフォルトの名無しさん
2006/03/14(火) 15:23:290325デフォルトの名無しさん
2006/03/14(火) 20:14:53どうもありがとうm(_ _)m
0326デフォルトの名無しさん
2006/03/14(火) 21:40:170328http://www.vector.co.jp/soft/win95/util/se072729.html
2006/03/18(土) 21:00:19もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?
そういや64bitにネイティブ対応している2chブラウザてありましたっけ?
0329デフォルトの名無しさん
2006/03/21(火) 21:06:30はくさい 150円<BR>
じゃがいも 300円<BR>
このような文字列から、野菜の名前と値段をセットにして抽出したいのですが、
「 のいくつかの繰り返し」を表現するにはどのようにすればいいのでしょうか。
0330デフォルトの名無しさん
2006/03/21(火) 21:09:050331デフォルトの名無しさん
2006/03/21(火) 21:11:59*nbsp;にんじん*nbsp;*nbsp;200円<BR>
*nbsp;*nbsp;はくさい*nbsp;*nbsp;150円<BR>
*nbsp;*nbsp;じゃがいも*nbsp;*nbsp;*nbsp;300円<BR>
このような文字列から、野菜の名前と値段をセットにして抽出したいのですが、
「*nbsp;のいくつかの繰り返し」を表現するにはどのようにすればいいのでしょうか。
0332デフォルトの名無しさん
2006/03/21(火) 22:12:52Perl で良い?
(*nbsp:)+
0333デフォルトの名無しさん
2006/03/21(火) 23:59:34最終的にどのような形にしたいの?
にんじん 200
はくさい 150
のように項目名+適当な区切り+金額+改行
でいいの?
>「*nbsp;のいくつかの繰り返し」だけでよければ
>>332の通り
ただ、それではだめな実装もある
0334デフォルトの名無しさん
2006/03/22(水) 00:01:36ありがとうございました。
0335デフォルトの名無しさん
2006/03/23(木) 00:18:36このときcccを取るにはドウスレバいいの?
0336デフォルトの名無しさん
2006/03/23(木) 00:19:320337デフォルトの名無しさん
2006/03/23(木) 02:38:28このときに
http://aaa.com/?bb と ccc を取りたいのです
0338デフォルトの名無しさん
2006/03/23(木) 02:39:250339デフォルトの名無しさん
2006/03/23(木) 02:52:250340デフォルトの名無しさん
2006/03/23(木) 02:55:400341デフォルトの名無しさん
2006/03/23(木) 14:24:51('A`;)ハァハァ
0342デフォルトの名無しさん
2006/03/23(木) 17:13:280343デフォルトの名無しさん
2006/03/24(金) 01:02:080344デフォルトの名無しさん
2006/03/24(金) 01:35:180345デフォルトの名無しさん
2006/03/24(金) 02:29:400346デフォルトの名無しさん
2006/03/24(金) 02:31:500347デフォルトの名無しさん
2006/03/24(金) 02:40:480348デフォルトの名無しさん
2006/03/24(金) 09:14:270349デフォルトの名無しさん
2006/03/24(金) 11:12:38grep(の基本的なもの)
Perl互換
POSIX拡張
の3つが主流になるのかな。まぁそれぞれ完全独立って
わけじゃないし、自分がメインで使うツールで勉強
すればいいんじゃないの?
0350デフォルトの名無しさん
2006/03/24(金) 18:33:290351デフォルトの名無しさん
2006/03/24(金) 18:55:250352デフォルトの名無しさん
2006/03/25(土) 00:01:57<p>
あいうえお
</p>
<pre>
かきくけこ
さしすせそ
</pre>
<p>
たちつてと
</p>
----
こういう文字列を
----
<p>
あいうえお
</p>
<pre>
かきくけこ
さしすせそ
</pre>
<p>
たちつてと
</p>
----
perl5の正規表現で、このように<pre>要素以外をすべてスペースでインデントしたいです。<pre>要素は無いかも知れないし、複数あるかも知れません。
$text =~ s/\n/\n /g;
こうすれば当然、全てインデントされてしまいます。<pre>だけ除外する方法を教えてください。
※スペースは全角で入れていますが、実際は半角です。
0353デフォルトの名無しさん
2006/03/25(土) 00:13:340354デフォルトの名無しさん
2006/03/25(土) 06:40:38/<pre>/ {
preFlag = 1;
}
{
if (!preFlag) {
printf("indent");
}
print;
}
/<\/pre>/ {
preFlag = 0;
}
#って、書いておきながら/preの/をエスケープする必要があったかどうか不安な漏れ
0355デフォルトの名無しさん
2006/03/25(土) 13:49:38$text =~ s/(?:<pre>.*<\/pre>|(?:^|(?<=\n))(.))/($1)?" $1":$&/sge;
0356デフォルトの名無しさん
2006/03/25(土) 15:20:35$text =~ s/(?:\n?<pre>.*?<\/pre>|(^))/defined($1)?"\t":$&/sgme;
0357355
2006/03/25(土) 18:59:47いまだに Perl の正規表現の m と s が使いこなせてない
(というか使い分けがうまくできてない) ヘタレな漏れ・・・orz
しかし、どうも >>355 の (?:^|(?<=\n)) とか >>356 の \n? が
いまいちキレイじゃない気がするんだよなあ。
もっとキレイな解法があればよろしく。
0358356
2006/03/26(日) 05:37:40__\n__\n<pre>\n__\n</pre>\n__\n__
.↑ ↑ ↑ ↑
希望するインデントの挿入位置はここ
__\n__\n<pre>\n__\n</pre>\n__\n__
.↑ ↑ ↑ ↑ ↑ ↑ ↑
mオプション付与時の ^ のマッチ位置はここ
3番目の矢印の位置に^がマッチする前に<pre>〜</pre>を食い切ればいい。
あらら、「\n?」いらないっぽい。
ということで推敲してこうなった。
$text =~ s/(?:(<pre>.*?<\/pre>)|^)/$1||"\t"/sgme;
0359352
2006/03/26(日) 13:55:09>>358を読んだら、>>355-356も含めてなんとか
理解できた気がします。
>>そして358で実際にうまく動作しています。
mとsを同時に指定したときの動作が、私はよくわかってないようです。
これから勉強してきます。
ありがとうございました。
0360デフォルトの名無しさん
2006/03/26(日) 16:50:23変換前:abcDEF123456
変換後:abc<半角英数以外>DEF</半角英数以外>123<半角英数以外>456</半角英数以外>
どのようにしてやればよいのでしょうか。教えてくだされ、神な人。。。
0361デフォルトの名無しさん
2006/03/26(日) 20:16:57置換:<半角英数以外>\1</半角英数以外>
0362デフォルトの名無しさん
2006/03/26(日) 20:20:30((?!文字列).)* は(?!)が使える環境なら結構便利。
0363デフォルトの名無しさん
2006/03/26(日) 21:31:060364デフォルトの名無しさん
2006/03/26(日) 21:41:26ちょっと調子に乗りすぎてた、すまん
0365360
2006/03/26(日) 22:06:53なぜか、文字コードと格闘しむずかしくムズカシク考えすぎてたっす。
多謝。
0366デフォルトの名無しさん
2006/03/27(月) 02:33:09のhogeを抜き出したいのですが、
[や]はパターン文に使えないですよね?
どのようにすればいいでしょうか
0367366
2006/03/27(月) 02:35:56認識出来ないエスケープシーケンスです。
というエラーになります。
0368デフォルトの名無しさん
2006/03/27(月) 02:44:36"...\\[...\\]" みたいにしてみては?
0369デフォルトの名無しさん
2006/03/32(土) 08:58:420370デフォルトの名無しさん
2006/03/32(土) 17:56:52どんな値をどんな法則でどうしたいのか条件が不明瞭。
ついでに、例示を含めて質問文が1行しかないのに改行云々まで言い出すのは無理な注文だよ。
# なるほど、正規表現が難しいって言ってる人は問題認識が出来てないんだね
0371369
2006/03/32(土) 18:18:24,\nと\n
の二回の置換で369の置換を行っています。これを一回でできれる表現があるのかなと
0372デフォルトの名無しさん
2006/03/32(土) 18:31:33日本語でどうぞ。
0373デフォルトの名無しさん
2006/03/32(土) 19:13:35$str = "aaaa123bbbb456";
$str =~ s/(?<=\d)(?=\d)/,/g;
0374369
2006/03/32(土) 19:38:240375デフォルトの名無しさん
2006/04/02(日) 02:04:37出た!情報小出し!
0376デフォルトの名無しさん
2006/04/02(日) 04:00:30小出しなら氏ね
0377369
2006/04/02(日) 04:40:07否定!の場所が限られているだとか謎が多いな、正規表現は
0378デフォルトの名無しさん
2006/04/02(日) 05:20:09標準と呼べるのは POSIXあたりになるような気が駿河、Perlの拡張を(一部)取り込んだものも
それなりにあるから、何を使ってやりたいのかを明示したら?
0379デフォルトの名無しさん
2006/04/02(日) 06:00:49質問するなら推敲してからにしてくれ
あと最低限の知識は
ぐぐって理解してくれ
0380デフォルトの名無しさん
2006/04/02(日) 09:53:20373さんの置換操作と同じ結果を期待するなら、
s/\d(?=\d)/$&,/g
>>377
369さんが、この置換操作を「どの処理系で実行したいのか」が「謎」。
0381デフォルトの名無しさん
2006/04/02(日) 17:11:080382デフォルトの名無しさん
2006/04/02(日) 17:47:36いや、こういうのは開発者としていい練習になる。
情報を小出しにするクライアントから、いかに
効率よく「やりたいこと」の全容を引っ張り出すか。
デスマーチに陥ってるようなプロジェクトの半分は
SEやPGにこの「聞き出し」能力に欠けているパターン。
0383デフォルトの名無しさん
2006/04/02(日) 19:20:030384デフォルトの名無しさん
2006/04/02(日) 21:57:56情報を小出しにした自分を正当化したいんでしょ
0385デフォルトの名無しさん
2006/04/03(月) 10:25:25最低限、言語は何かっつーのは言わせないと
0386デフォルトの名無しさん
2006/04/03(月) 13:15:030387デフォルトの名無しさん
2006/04/03(月) 19:09:03それは該当する他スレでやってくれ
一般的なスレでやられると
馬鹿が助長して結果まわりが被害を被ることになる
0388デフォルトの名無しさん
2006/04/03(月) 23:19:16またーり進行きぼんぬ
0389デフォルトの名無しさん
2006/04/03(月) 23:20:040390デフォルトの名無しさん
2006/04/03(月) 23:22:39過疎スレなんだし仲良くしてください。
0391酩酊 ◆TWARamEjuA
2006/04/03(月) 23:28:190392デフォルトの名無しさん
2006/04/07(金) 12:56:26で検索かけたのですが、
<html>
とか
<div style='width:100%; border-bottom:1px solid #888;'>
が引っかかってくれません。
やりたいことは<dt>で始まらない行をすべて探したいのですが、
どうすればいいでしょうか?
0393デフォルトの名無しさん
2006/04/07(金) 12:58:370394デフォルトの名無しさん
2006/04/07(金) 13:04:03秀丸です。
0395デフォルトの名無しさん
2006/04/07(金) 13:27:330396デフォルトの名無しさん
2006/04/07(金) 14:58:40<dt>で始まらない行を置換ですべて取り除きたいんです。
0397デフォルトの名無しさん
2006/04/07(金) 15:02:57正規表現は、基本的に「〜にマッチしないもの」を表すのは苦手なので、
「マッチするのは何か」で考えないと。
・< 以外で始まる行にはマッチする, or
・1文字目が <、2文字目が d 以外ならマッチする, or
・1文字目が <、2文字目が d、3文字目が t 以外ならマッチする
で正規表現を組み立ててみそ。
0398デフォルトの名無しさん
2006/04/07(金) 15:06:58>395して、差分を取るとか。
#差分を取るツール? 自分で探せ。
>[^d][^t]
を[^d][^t][^>]に置き換えるとか。
#<dl>にはマッチしちゃうけど。
秀丸で作業するのを諦めるとか。
#例えば grep '^<dt>' でことが足りそうだ。
0399デフォルトの名無しさん
2006/04/07(金) 15:18:39みたいですね。
どうもありがとうございました。
0400デフォルトの名無しさん
2006/04/07(金) 15:43:06ttp://mata-ri.tk/up1/src/1M1626.txt.html
パスは123です。
このデータから何回かの置換を行って確実にIDだけを抜き出したいのですが、
208・584行目のトラップがどうにも抜けられません。
プログラムで完全自動処理できるようにするつもりですので、
手動でやれ!は勘弁してください。
正規表現は
ttp://www.hi-ho.ne.jp/babaq/bregexp.html
のを使用します。
0401デフォルトの名無しさん
2006/04/07(金) 23:50:440402デフォルトの名無しさん
2006/04/07(金) 23:51:470404デフォルトの名無しさん
2006/04/08(土) 01:25:24間違ってるけどなw
0405デフォルトの名無しさん
2006/04/08(土) 09:57:510406デフォルトの名無しさん
2006/04/09(日) 03:31:22みたいなHTML中の行から、/img/hogehoge.jpgだけ抜くには、どういうパターンにすればよい?
あちこちの正規表現解説サイト見たけど、具体例が少なくて理解不能。orz
具体例が多くて、馬鹿丁寧に解説してあるウェブページ無い?
0407デフォルトの名無しさん
2006/04/09(日) 05:25:04本当に必ずその例の通りと決まってるなら、
sed 's/[^"]*"\([^"]*\)".*/\1/'
0408デフォルトの名無しさん
2006/04/09(日) 09:13:050409デフォルトの名無しさん
2006/04/09(日) 10:00:31なんて文句が多いくせに自分の質問は思いっきり手抜きだからな
0410デフォルトの名無しさん
2006/04/09(日) 10:04:47のはなにも勉強してないのと同義じゃないだろうか...
0411デフォルトの名無しさん
2006/04/09(日) 11:04:01情報工学の学生とかだと、正規表現の理論を覚える事が重要だけど、一般人には実際の使い方で十分でしょ。
自動車工学の学生はエンジンの仕組みとか覚える必要が有るけど、一般人はスタートキー押してアクセル踏めばいいだけ。
rubyだとこんな感じかな。
#!/usr/bin/ruby
href_links_array = []
open("index.html") {|file|
while line_strings = file.gets
href_link = line_strings.gsub!(/.*href="(.*?)".*\n/i, '\1')
if href_link != nil then
href_links_array.push(href_link)
end
end
}
p href_links_array
0412デフォルトの名無しさん
2006/04/09(日) 11:13:27href_link = line_strings.gsub(/.*href="(.*?)".*\n/i, '\1')
で十分。まだまだ修行が足りんな。
0413デフォルトの名無しさん
2006/04/09(日) 11:15:16>スタートキー押して
に思いっきり違和感。
0414デフォルトの名無しさん
2006/04/09(日) 12:06:080415デフォルトの名無しさん
2006/04/09(日) 12:08:070416デフォルトの名無しさん
2006/04/09(日) 12:20:09\hでひらがな
\kで漢字
とかほしいのに
0417デフォルトの名無しさん
2006/04/09(日) 12:25:14文字コードとか面倒だからねえ。
実装したら公開してちょーだい。
0418デフォルトの名無しさん
2006/04/09(日) 12:26:39\p{IsHiragana} とか \p{IsCJKUnifiedIdeographs} とか書けるけど。
http://www.atmarkit.co.jp/fdotnet/dotnettips/054iskana/iskana.html
0419デフォルトの名無しさん
2006/04/09(日) 12:57:27とか出来ると便利かもね。
0420デフォルトの名無しさん
2006/04/09(日) 15:06:04普通は「ボタンを押す」か「キーを回す」わけで、「キーを押す」ことでエンジンはかからないなぁと。
しかしそれ以前に、>411の一般人のような理屈で車の運転をして欲しくないと思うのだけど。
0421デフォルトの名無しさん
2006/04/09(日) 15:56:240422デフォルトの名無しさん
2006/04/09(日) 16:28:400423デフォルトの名無しさん
2006/04/09(日) 16:31:510424デフォルトの名無しさん
2006/04/09(日) 16:44:140425デフォルトの名無しさん
2006/04/09(日) 16:52:06んなわきゃあない
0426デフォルトの名無しさん
2006/04/09(日) 17:31:070427デフォルトの名無しさん
2006/04/09(日) 17:43:180428デフォルトの名無しさん
2006/04/09(日) 17:46:210429デフォルトの名無しさん
2006/04/09(日) 18:22:390430酩酊 ◆TWARamEjuA
NGNG0431デフォルトの名無しさん
2006/04/09(日) 19:07:160432デフォルトの名無しさん
2006/04/09(日) 19:10:060433デフォルトの名無しさん
2006/04/09(日) 20:53:47一般人に優しくない技術ですね。
ヒント:Javaの宿題スレ。
0434デフォルトの名無しさん
2006/04/09(日) 21:28:000435デフォルトの名無しさん
2006/04/09(日) 21:52:190436デフォルトの名無しさん
2006/04/09(日) 23:48:36厳密でない構文処理してリンクの抽出とかやるのは
ある意味XMLよりやっかいかもしれんが。
0437デフォルトの名無しさん
2006/04/10(月) 20:48:560438デフォルトの名無しさん
2006/04/10(月) 21:21:520439デフォルトの名無しさん
2006/04/10(月) 21:30:02マッチするものの否定を取った方が楽ですよ
0440デフォルトの名無しさん
2006/04/10(月) 21:48:46こんがらがってきてわからなくなってきました・・・
例としてmaxという文字列を含まないものをマッチさせるにはどうすれば・・・
0441デフォルトの名無しさん
2006/04/10(月) 22:02:34ある文字列を含まない文を見つける
0442デフォルトの名無しさん
2006/04/10(月) 23:09:350443デフォルトの名無しさん
2006/04/11(火) 03:00:25このスレのログから「含まない」を含む記事にマッチさせればいい
0444デフォルトの名無しさん
2006/04/11(火) 09:41:50のみマッチする正規表現E'は存在するわけだが、
具体的にはどうすりゃいいのかね....
0445デフォルトの名無しさん
2006/04/11(火) 09:52:210446デフォルトの名無しさん
2006/04/11(火) 09:58:33いや俺も理論的な話はからっきしダメなんだが。
0447デフォルトの名無しさん
2006/04/11(火) 10:01:230448デフォルトの名無しさん
2006/04/11(火) 10:10:47正規表現
マッチ演算子とは、ある文字列が正規表現で表されたパターンにマッチするかどうか
を調べる演算子です。この演算子は、マッチした時には真を、マッチしない時に
は偽( 空文字)を返します。戻り値が真・偽となりますから、通常はif文やwhile文と
共に ...
www.komonet.ne.jp/~perl/chap7.htm - 18k - キャッシュ - 関連ページ
0449デフォルトの名無しさん
2006/04/11(火) 11:22:58^([^m]*($|m($|[^a]|a($|[^x]))))*$
0450デフォルトの名無しさん
2006/04/11(火) 13:58:00ちょっとでもググればここひっかかるんだがな
http://www.din.or.jp/~ohzaki/regex.htm#WithoutXY
あと「否定の正規表現」でググった1件目(のキャッシュ)
>>449
"mmax"がマッチ
0451デフォルトの名無しさん
2006/04/11(火) 16:58:48^([^m]*($|m+($|[^a]|a($|[^x]))))*$
だとmamaxがだめになるし。
後から攻めて
^([^x]*|[^x]*[^ax]x|[^x]*[^mx]ax)*$
とか。結構難しいなこれ。
0452デフォルトの名無しさん
2006/04/11(火) 21:21:330453デフォルトの名無しさん
2006/04/11(火) 21:45:43Perl Compatibleな正規表現と特に指定や断りのない限り、
なるべく一般性のある正規表現で書かないか?
最近すぐに (?...) って出てくるからつまんなくてさ。
0454デフォルトの名無しさん
2006/04/12(水) 11:00:050455デフォルトの名無しさん
2006/04/12(水) 11:13:080456デフォルトの名無しさん
2006/04/12(水) 11:53:370457デフォルトの名無しさん
2006/04/12(水) 16:59:40if((L[i].href.match(/^.*\.html$/)) || (L[i].href.match(/^.*\.htm$/)))
この書き方を縮められませんでしょうか?
どうぞよろしく御願いします。
0458デフォルトの名無しさん
2006/04/12(水) 17:07:500459デフォルトの名無しさん
2006/04/12(水) 17:13:120460デフォルトの名無しさん
2006/04/12(水) 17:29:23こういうのを縮めたいのですが、どうすればいいのでしょうか?
0461デフォルトの名無しさん
2006/04/12(水) 17:39:314つだったら4x3x2x1=24書けば1つの正規表現になるな。
/(hoge.*hage.*page.*pyage|hoge.*hage.*pyage.*page|...)/
0462デフォルトの名無しさん
2006/04/12(水) 17:49:01/hoge.*(hage.*(page.*pyage|pyage.*page)|page.*(hage.*pyage)|...
0463デフォルトの名無しさん
2006/04/12(水) 18:01:28素直に正規表現の配列をループで回してマッチした方が良いような。
0464デフォルトの名無しさん
2006/04/12(水) 18:16:210465デフォルトの名無しさん
2006/04/12(水) 18:17:32じゃあ何を使って文字列マッチをするの? index() ?
0466デフォルトの名無しさん
2006/04/12(水) 22:19:414パスを1パスに縮めてみました。
でも、コードは伸びちゃいました。or?
var a=[0,0,0,0];
L[i].href.replace(/((?=(hoge)|(hage)|(page)|(pyage)).)*/g,function(){for(var i=0;i<a.length;i++)a[i]|=new Boolean(arguments[i+2])});
if(eval(a.join('*')))alert('ぜんぶめっけ♪');
hogege の中に、hoge と gege をいっぺんに見つけたいなら、
食べない走査がいいのかも。(←意味不明なら読み飛ばしてね)
0467デフォルトの名無しさん
2006/04/12(水) 22:30:21[0-9a-fA-Z]{16}で表せる文字列以外という表記はどのようになりますか?
また{16}が{8}、{12}、{16}のいずれかの場合というのはどのようにすればいいのでしょうか?
0468デフォルトの名無しさん
2006/04/12(水) 23:00:53/([0-9a-fA-Z]{4}){2,4}/
0469デフォルトの名無しさん
2006/04/12(水) 23:11:330470酩酊 ◆TWARamEjuA
NGNG0471デフォルトの名無しさん
2006/04/13(木) 01:52:22どうすればいいんでしょうか。
例えば ~/user/folder/file.txt から ~/user/folder/ だけ。
0472デフォルトの名無しさん
2006/04/13(木) 02:12:19Perl でいい?
m#([^/]+)$# で $1 とか。
0473デフォルトの名無しさん
2006/04/13(木) 02:26:40マルチプロセッサを考えると探索の順序と枝刈に意味のあるPerlよりも
POSIXの方が実装的に将来性が高いのだが
0474デフォルトの名無しさん
2006/04/13(木) 03:14:32ありがとうございます。
0475デフォルトの名無しさん
2006/04/13(木) 10:25:420476472
2006/04/13(木) 10:38:320477デフォルトの名無しさん
2006/04/16(日) 02:23:230478デフォルトの名無しさん
2006/04/16(日) 06:42:300479デフォルトの名無しさん
2006/04/21(金) 12:13:18間にある2つ以上のスペースを1つにするには
どうしたらできますでしょうか?
「小泉 純一」 → 「小泉 純一」
0480デフォルトの名無しさん
2006/04/21(金) 12:14:51「小泉 純一」→「小泉 純一」
0481デフォルトの名無しさん
2006/04/21(金) 12:29:47sedでいいなら
s/ */ /g
0482デフォルトの名無しさん
2006/04/21(金) 13:13:37ありがとう。
*だったんでした。
ちなみにreplaceは置換と言いたかったんです。
2chの半角スペースも正規表現でやってるのかな w
0483デフォルトの名無しさん
2006/04/21(金) 13:18:17htmlは、本文中の空白を纏めるのが仕様です。
0484デフォルトの名無しさん
2006/04/21(金) 13:33:11html のソースを見てみると >>483 の意味が良くわかると思う。
0485デフォルトの名無しさん
2006/04/21(金) 15:22:34どう書けばいい?
0486デフォルトの名無しさん
2006/04/21(金) 15:56:440487デフォルトの名無しさん
2006/04/21(金) 16:09:560488デフォルトの名無しさん
2006/04/22(土) 02:46:57thanks
0489デフォルトの名無しさん
2006/04/22(土) 15:10:210490デフォルトの名無しさん
2006/04/22(土) 16:09:16これじゃ駄目なの?
0491デフォルトの名無しさん
2006/04/22(土) 16:25:42パッと見間違ってるとこだけ直す
<\!DOCTYPE[^>]*?>
0492デフォルトの名無しさん
2006/04/22(土) 16:26:220493デフォルトの名無しさん
2006/04/22(土) 18:00:49grepでやってみたけど改行が入ってるとマッチしない・・・
0494デフォルトの名無しさん
2006/04/22(土) 18:16:33Pattern p = Pattern.compile("START.*\\s+m='([^']*)'.*END");
Matcher m = p.matcher("START m='abc' b='test' m='de' END START m='zzz' END ");
while (m.find()) {
String sValue = m.group(1);
System.out.println("Value=" + sValue);
}
正しい結果は
abc
zzz
と出力して欲しいのですが、どのような正規表現にしたらいいのでしょうか?
0495デフォルトの名無しさん
2006/04/23(日) 01:54:060496デフォルトの名無しさん
2006/04/23(日) 02:25:02平仮名を片仮名に変換するための正規表現を教えてください
0497デフォルトの名無しさん
2006/04/23(日) 02:49:020498デフォルトの名無しさん
2006/04/23(日) 03:14:31なぜgrepを使う… grepは行をまたいでのマッチングはしないよ。
0499デフォルトの名無しさん
2006/04/23(日) 11:40:15そうだっだんだ
でも、D言語のstd.regexpで使ったら出来たよ。
0500デフォルトの名無しさん
2006/04/23(日) 12:02:020501デフォルトの名無しさん
2006/04/23(日) 12:05:150502デフォルトの名無しさん
2006/04/23(日) 16:50:40"自体は含めない方法を教えてください
0503デフォルトの名無しさん
2006/04/23(日) 17:06:160504デフォルトの名無しさん
2006/04/23(日) 17:48:56こっちじゃないかな〜
0505デフォルトの名無しさん
2006/04/23(日) 18:22:240506デフォルトの名無しさん
2006/04/23(日) 19:48:12"bbb"
0508デフォルトの名無しさん
2006/04/24(月) 13:46:02何をしたいのか詳しく書け。
つーか、>503を無視すんじゃね。
0509デフォルトの名無しさん
2006/04/24(月) 13:52:35>>504 は、マッチさせた後に $1 で取り出せばいい、と言ってると思うんだが、
意図は汲んでる?
0510デフォルトの名無しさん
2006/04/25(火) 01:51:070511デフォルトの名無しさん
2006/04/25(火) 02:07:13Perl や Ruby なら x オプション。
0513デフォルトの名無しさん
2006/04/27(木) 09:14:180514デフォルトの名無しさん
2006/04/27(木) 09:23:170515デフォルトの名無しさん
2006/04/27(木) 09:55:150516デフォルトの名無しさん
2006/04/27(木) 10:34:55オートマトンと透過なので、カッコの数を無限に保持することができないって
例の奴)、ある有限の深さまでの正規表現は作れるので、文字列が与えられ
てから、深さ=文字列長/2までの正規表現を機械的に生成してマッチさせれば
できるよ。
0517デフォルトの名無しさん
2006/04/27(木) 23:33:29次のように書いてみたのですがだめでした。
[^オ]セロ
どう書けばよいか教えてください ( ´・ω・`)
0518デフォルトの名無しさん
2006/04/27(木) 23:36:15ソースもUTF-8で書く
読み込むデータもUTF-8に統一
0519デフォルトの名無しさん
2006/04/27(木) 23:37:190520デフォルトの名無しさん
2006/04/28(金) 00:46:150521デフォルトの名無しさん
2006/04/29(土) 00:42:33教えてくれる人いたらよろしくお願いします!
0522デフォルトの名無しさん
2006/04/29(土) 01:10:35これでセロがマッチした位置を取得すればいいんじゃないの?
0523デフォルトの名無しさん
2006/04/29(土) 01:38:170524デフォルトの名無しさん
2006/04/29(土) 02:07:19/(?<!オ)セロ/
0525デフォルトの名無しさん
2006/04/29(土) 03:13:21何に準拠した正規表現なのかマニュアルに記載がないんでわかりません。
0526デフォルトの名無しさん
2006/04/29(土) 04:18:350527デフォルトの名無しさん
2006/04/29(土) 06:31:03十分わかるじゃん。>>525
perlでって前提がついてないのに、説明梨に突然perlの正規表現持ち出すってのは
どうよ。>>524 一言「Perl限定でよければ」と添えればまだモメないものをさー。
0528デフォルトの名無しさん
2006/04/29(土) 13:35:480529デフォルトの名無しさん
2006/04/29(土) 13:40:36だって2ちゃんねるブラウザなんだもの。ごめんね。
0530デフォルトの名無しさん
2006/04/30(日) 09:38:26<ul>[改行]
<li>aaa[改行]
AAA</li>[改行]
<li>bbb[改行]
BBB</li>[改行]
</ul>
というソースから
"aaa\nAAA","bbb\nBBB"
という配列を取得するにはどのように書いたら良いですか?
環境はJavascriptです。
0531デフォルトの名無しさん
2006/04/30(日) 09:59:35"<ul>\n<li>aaa\nAAA</li>\n<li>bbb\nBBB</li>\n</ul>".match(/<li>.*\n.*<\/li>/mg)
と思ったら改行2個の時にダメだorz
お。これなら?
"<ul>\n<li>aaa\nAA\nA</li>\n<li>bbb\nBBB</li>\n</ul>".match(/<li>(.|\n)*<\/li>/mg)
終了タグが2個目のしかマッチしないやorz むー
0532デフォルトの名無しさん
2006/04/30(日) 10:50:500533デフォルトの名無しさん
2006/04/30(日) 11:44:11お、おおお。量指定子の直後に?を置くと最小マッチになるんか…知らんかった、どうも有り難う!
0534デフォルトの名無しさん
2006/04/30(日) 20:32:540535デフォルトの名無しさん
2006/04/30(日) 22:03:05カッコのネストがあるから普通の正規表現では不可能
perlの(?{ code })のような飛び道具を使えばなんとか
なるかもしれないが、そこまでしたら正規表現でできた
とは言わないと思う。
0536デフォルトの名無しさん
2006/05/01(月) 21:59:10/\/.+?\//でええんでないの?
0537デフォルトの名無しさん
2006/05/02(火) 00:52:490538デフォルトの名無しさん
2006/05/02(火) 01:26:27正しいもののみ受理するようなのをを期待してるんじゃないか?
2つの/にはさまれた文字列でよけりゃさすがに悩まないだろ。
真意は534にきいてみないとわからんがな。
0539536
2006/05/02(火) 19:55:19/と/に挟まれた文字列以外の何にマッチさせたいんじゃ。
ネスト何とか言っとるが、全部数えて複数個なら一番下の階層から
処理していけばいいんじゃねえ?奇数なら最初から数えてやるか
最後から数えてやるか定義しなきゃ、答えのねえ問いじゃねえか。
0540デフォルトの名無しさん
2006/05/02(火) 20:36:050541デフォルトの名無しさん
2006/05/03(水) 00:09:23について質問です
var m = uri.match(/https?:\/\/[^\/]*amazon\.co\.jp\/.*ASIN\/(\w{10})([\/&].*|)$/);
上記はjavascriptのソースの一部なんですが、
正規表現部分の最後の
([\/&].*|)$
が意味わかりません
| は何のためにあるんでしょうか?
| って選択演算子だったと思うのですが
| の右側に何もないので選択できないと思うのですが、
これは[\/&.*]があればそれを、なければ何も選択しないという意味でしょうか?
あと[\/&]についてなんですが
これは
\か/か&のうちどれかという意味であっていますか?
それとも\はエスケープシーケンスで
/か&のどちらかという意味でしょうか?
0542デフォルトの名無しさん
2006/05/03(水) 01:16:22[\/&]は「/ もしくは &」という意味。
手元のブラウザWinIE6ではエスケープしてもしなくてもスラッシュそのものとして扱われたけど
ひょっとしたら何かのブラウザがデリミタと誤認しないようにしてるのかも。
キャラクタクラス内でも \] を使えるように、普通エスケープは効くよ。
で、(pattern|)という構文は(pattern)? とほぼ同じ。
0543デフォルトの名無しさん
2006/05/03(水) 08:34:32よくわかりました
0544デフォルトの名無しさん
2006/05/03(水) 15:06:34is a pen.
this(半角スペースを入れたい)
is a pen.
テキスト中の文字を改行で挟む場合に
半角スペースを挿入したいのですが、
桜エディタ等での置換の正規表現はどのようになりますか
0545デフォルトの名無しさん
2006/05/03(水) 18:15:110546デフォルトの名無しさん
2006/05/03(水) 19:15:54[a-z]$
と入力すると、検索には引っかかるんですが、置換ができません・・
0547デフォルトの名無しさん
2006/05/03(水) 19:36:09". "を "." に戻せばいいんだよぉ。
0548デフォルトの名無しさん
2006/05/03(水) 19:37:550549デフォルトの名無しさん
2006/05/03(水) 22:44:28ありがとうございました
0550デフォルトの名無しさん
2006/05/04(木) 09:13:19この中にbとcがちょうど1回ずつあるかどうかを調べるのは、
正規表現で実現可能ですかね?
0551デフォルトの名無しさん
2006/05/04(木) 11:23:20# bとcがちょうど1回ずつある
}
0552デフォルトの名無しさん
2006/05/04(木) 11:25:590553デフォルトの名無しさん
2006/05/04(木) 11:27:270554デフォルトの名無しさん
2006/05/04(木) 14:58:00[^cb]*
(c[^cb]*b|
b[^cb]*c)
[^cb]*
$
だろ?
0555550
2006/05/04(木) 19:19:100556デフォルトの名無しさん
2006/05/05(金) 07:07:45> \/ や \\/ は?
\/はありえそうにない文字(例えば@)に置き換えときゃいいじゃん。
\\は別のありえそうにない文字(例えば#)に置き換える。
エスケープ文字なんてそう多くないんだから実用上これで問題ないんじゃ?
0557デフォルトの名無しさん
2006/05/06(土) 20:07:203種類のうち2種類が含まれているかを判定する正規表現って可能ですか?
例)
abcde ×
ab123 ○
12344 ×
1!1#1 ○
0558デフォルトの名無しさん
2006/05/06(土) 20:41:55^([a-z]*|[0-9]*|[記号]*)$ の否定を取るだけでいいかな
あとは[a-z][0-9]といった途中で文字種が変化するパターンを1個見つければいいとかさ
2種類だけだと…
^([a-z0-9]*|[a-z記号]*|[0-9記号]*)$ こうするしかないかな?
0559デフォルトの名無しさん
2006/05/06(土) 20:44:06a.*1|1.*a|a.*!|!.*a|1.*!|!.*1
a,1,!はそれぞれ適切な文字クラスに置き換えてくれ。
0560デフォルトの名無しさん
2006/05/07(日) 00:26:223種類のうち必ず2種類という条件なら
^([a-z0-9]*[a-z][0-9][a-z0-9]*|[a-z0-9]*[0-9][a-z][a-z0-9]*|[a-z記号]*[a-z][記号][a-z記号]*|[a-z記号]*[記号][a-z][a-z記号]*|[0-9記号]*[0-9][記号][0-9記号]*|[0-9記号]*[記号][0-9][0-9記号]*)$
う〜ん長すぎて気持ち悪いナァ
0561558
2006/05/07(日) 01:25:15>>560は
^((a+b|b+a)[ab]*|(b+c|c+b)[bc]*|(a+c|c+a)[ac]*)$
の形を適用すれば半分くらいになりそう
\1\2を駆使すれば更に短くなりそうだけど思いつかなかった。
0562デフォルトの名無しさん
2006/05/11(木) 17:22:08下のように1行に2ペア以上があるとカッコ以外の部分までヒットしてしまう…
【正規表現】分からなくてスミマセン【秀丸】
これを解決するには最初の】←カッコ閉じを指定すればいいと思うんですが
どうすれば良いのでしょうか?
0563デフォルトの名無しさん
2006/05/11(木) 17:36:10>>562
【.*?】
で、可能ではないかしら・・・
0564デフォルトの名無しさん
2006/05/11(木) 17:50:38どの正規表現実装を使うのか書きなさいな。
【[^】]*】
0565デフォルトの名無しさん
2006/05/11(木) 17:51:46ありがとー!バッチリできましたよ。
0567デフォルトの名無しさん
2006/05/11(木) 18:17:510568デフォルトの名無しさん
2006/05/11(木) 18:47:52秀丸じゃないの?
0570デフォルトの名無しさん
2006/05/11(木) 22:02:47そうだが、質問文見る限り秀丸じゃない?っていおうとしたら>>564なのね…orz
0571・∀・)っ-○◎● ◆toBASh....
2006/05/12(金) 06:58:41愕然とした
onig_searchでregex_tの構造体の中身操作してる。
これ全然スレッドセーフじゃねーじゃん
正規表現オブジェクトのコピーをする関数が見つからない
ソース文字列分だけコンパイルすればええんかアレ
0572デフォルトの名無しさん
2006/05/12(金) 10:47:09作者に報告 or patch の contribute よろ。
0573デフォルトの名無しさん
2006/05/12(金) 10:53:55同じ regex_t を別々のスレッドから利用するのはそもそも間違いなんでは?
普通の正規表現ライブラリはそれでも問題なく動くの?
POSIX regex で regerror なんかいかにも問題ありそうだけど。
0574・∀・)っ-○◎● ◆toBASh....
2006/05/13(土) 08:09:07C++ラッパークラス作ろうとして困っている。
0575・∀・)っ-○◎● ◆toBASh....
2006/05/13(土) 08:17:29共有していい仕様になってた希ガス
extern int
onig_search(regex_t* reg, UChar* str, UChar* end,
UChar* start, UChar* range, OnigRegion* region, OnigOptionType option)
{
int r;
UChar *s, *prev;
MatchArg msa;
if (ONIG_STATE(reg) == ONIG_STATE_NORMAL) {
reg->state++; /* increment as search counter */
if (IS_NOT_NULL(reg->chain)) {
onig_chain_reduce(reg);
reg->state++;
}
}
(以下略)
最初の数行だけで明らかにヤバイっしょ。
排他ロックかけるか、パターンのコピーをとらなきゃいけないんだが、
前者はやりたくないし、後者はパターンのコピーをする関数が見つからない。
実はC++ラッパー作ろうとしてるんだけど、コピーをどうやって実装しようか
悩んでいる。
クラスオブジェクトに元の文字列を含めておいて、コピーコンストラクタで文字列をコピーする形にして
その都度onig_newって手もあるんだけど、それって結構ダサい実装じゃね。
0576デフォルトの名無しさん
2006/05/13(土) 12:36:05>クラスオブジェクトに元の文字列を含めておいて、コピーコンストラクタで文字列をコピーする形にして
>その都度onig_newって手もあるんだけど、それって結構ダサい実装じゃね。
こうやってるC++ラッパ見た事あるよ
0577デフォルトの名無しさん
2006/05/13(土) 13:53:31例えば「セクース」という言葉が含まれている場合は排除したいのですが
○セクースなどと言うセクースとは全く関係ない言葉があったとしてそれまで排除したくなのです。
○のところがひらがなや漢字アルファベットなどでカタカナ以外だった場合は「セクース」という単語がマッチするものとしてくれればいいです。
要するに単語の先頭からセクースというカタカナで始まる場合は排除して
セクースのセの前がカタカナだった場合は該当しないとしたいのです。
セクースマシンガンズやセクースピストルズ、セクースフレンドなどは排除してもかまいません。
出来ますかね?
0578酩酊 ◆TWARamEjuA
NGNG0579デフォルトの名無しさん
2006/05/13(土) 16:43:17まぁ、無駄な鼬ごっこはできるが。
0580デフォルトの名無しさん
2006/05/13(土) 16:45:53マルチバイトかワイド文字対応の正規表現使うなら
[^ア-ン]セクース
0581デフォルトの名無しさん
2006/05/13(土) 23:00:27(表示義務も無い奴がベスト)
0582デフォルトの名無しさん
2006/05/14(日) 03:36:090583デフォルトの名無しさん
2006/05/14(日) 05:19:280584デフォルトの名無しさん
2006/05/14(日) 07:32:100585デフォルトの名無しさん
2006/05/14(日) 09:22:18他人の作ったライブラリをあたかも自分で作ったかのように振る舞おうとしてんじゃねぇよ。
素人が見りゃどんなライブラリ使っていても
このソフトスゲー=作者スゲー≠このライブラリスゲー
の認識しか持たないからいちいち小さいことで自分のプライドが傷つくとか思ってんじゃねぇよ。
0586デフォルトの名無しさん
2006/05/14(日) 10:28:010587デフォルトの名無しさん
2006/05/14(日) 11:41:24その3日が無駄だよ。
0588デフォルトの名無しさん
2006/05/14(日) 14:26:550589デフォルトの名無しさん
2006/05/14(日) 23:38:170590デフォルトの名無しさん
2006/05/14(日) 23:44:28有名な話だが、validなメールアドレスを正確に正規表現で表すことは出来ない。
0591デフォルトの名無しさん
2006/05/14(日) 23:51:570592デフォルトの名無しさん
2006/05/14(日) 23:53:03お勧めないですか?
0593デフォルトの名無しさん
2006/05/15(月) 00:08:450594デフォルトの名無しさん
2006/05/15(月) 00:38:44サイズふくらむけど。
0595デフォルトの名無しさん
2006/05/15(月) 12:25:06spam業者
0596デフォルトの名無しさん
2006/05/16(火) 00:27:37>>589よ、これを使いなさい。
つ「.+@.+」
0597デフォルトの名無しさん
2006/05/16(火) 01:44:09輝く石ころですか?
0598デフォルトの名無しさん
2006/05/16(火) 09:03:550599デフォルトの名無しさん
2006/05/16(火) 09:35:44あれでも制限付きな例だし、
そもそもここで正規表現使うべきじゃないよっていう反例的な意味合いが強い気がする。
0600デフォルトの名無しさん
2006/05/16(火) 09:39:01真面目にやるならパーサを使うべきだし、
そこまで必要でないのであれば、ある程度妥協しつつ、
ケースによってパターンを使い分けるのが良いと思う。
場合によっては >>596 でも良い場合もあるでしょう。
0601デフォルトの名無しさん
2006/05/17(水) 12:11:300602デフォルトの名無しさん
2006/05/17(水) 12:25:46と思ったけど、さすがに「.+@.+」は無い罠・・・
0603デフォルトの名無しさん
2006/05/17(水) 12:33:27クをするウェブアプリケーションで「メールアドレスが不正」とか怒ら
れることがあって遺憾でした。
0604デフォルトの名無しさん
2006/05/17(水) 12:40:160605デフォルトの名無しさん
2006/05/17(水) 13:57:120606デフォルトの名無しさん
2006/05/17(水) 14:01:350607デフォルトの名無しさん
2006/05/17(水) 14:21:41[-\w!#$%&'*+/=?^_`{|}~]+(\.[-\w!#$%&'*+/=?^_`{|}~]+)*@[-\w]+(\.[-\w]+)+
こんぐらいでいいかんじかね。
参考: RFC 2822
0608デフォルトの名無しさん
2006/05/17(水) 15:04:14メールアドレスも BNF じゃなくて正規表現で定義されていたのでないかと妄想中。
0609デフォルトの名無しさん
2006/05/17(水) 23:54:36つ正規表現→字句文法
0610デフォルトの名無しさん
2006/05/18(木) 10:36:260611デフォルトの名無しさん
2006/05/18(木) 23:14:53使うってどこに?
0612デフォルトの名無しさん
2006/05/18(木) 23:26:58正規表現ではマルチバイト文字を認識するのあるし
0613デフォルトの名無しさん
2006/05/21(日) 17:14:260614デフォルトの名無しさん
2006/05/21(日) 17:39:180615デフォルトの名無しさん
2006/05/21(日) 17:44:59すみません、これってどういう意味なのでしょうか?
\w\Wが突然出てきてわかりません。
お願いします
0616デフォルトの名無しさん
2006/05/21(日) 17:54:11変な正規表現…。
[¥w¥W] で「全ての文字」ってやりたいだけ。. でも良いのにね。
0617デフォルトの名無しさん
2006/05/21(日) 17:55:50おおっ、なるほど!!
即レスありがとうございました、助かりました(_ _)
0618デフォルトの名無しさん
2006/05/21(日) 17:56:45改行を含めたいからとか。俺もよく [\S\s] とかやる。
0619デフォルトの名無しさん
2006/05/21(日) 19:37:210620デフォルトの名無しさん
2006/05/23(火) 01:48:06ぬおおおおおお!!
:とやまー|富山?
0621デフォルトの名無しさん
2006/05/23(火) 17:50:230622デフォルトの名無しさん
2006/05/23(火) 17:54:450623デフォルトの名無しさん
2006/05/24(水) 16:23:37をマッチさせるにはどうすればよいのでしょうか?
0624623
2006/05/24(水) 16:25:170625デフォルトの名無しさん
2006/05/24(水) 18:51:080626623
2006/05/24(水) 22:56:56thx!!
なるほどね... ^[^\*:]
0627デフォルトの名無しさん
2006/05/25(木) 08:10:100628デフォルトの名無しさん
2006/05/25(木) 18:21:40こういうUIで全角数字を半角数字に置換しようとしたら
上下2つのテキストフィールドにどう書き込んだらいいと思いますか
お願いします
0629デフォルトの名無しさん
2006/05/25(木) 18:32:500630デフォルトの名無しさん
2006/05/27(土) 11:38:43\(*\^-\^*\)/
0631デフォルトの名無しさん
2006/05/27(土) 16:30:01[a-zA-Z0-9]
0633T女の竹田
2006/05/29(月) 14:32:12全角半角変換
0634デフォルトの名無しさん
2006/05/29(月) 16:13:09文字コードによる
出来るのもある
0635T女の竹田
2006/05/29(月) 16:22:52いや、Perlのtrは正規表現じゃないよね。
例えば>>628さんの状況だと、文字コードにかかわらず無理じゃないかな。
数字だけなら10回やったらできるけど。
0636デフォルトの名無しさん
2006/05/29(月) 17:03:30試してないけどさ
0637デフォルトの名無しさん
2006/05/29(月) 19:20:40「正規表現では無理」なんじゃないの?
use Encode だとするとどうやるの?
0638デフォルトの名無しさん
2006/05/29(月) 19:38:57:
s/z/z/g;
s/A/A/g;
:
s/Z/Z/g;
s/0/0/g;
:
s/9/9/g;
って全文字繰り返せば「正規表現でもできる」よ。
0639デフォルトの名無しさん
2006/05/29(月) 19:55:03単一のs/.../自体は正規表現といっていいだろうけどさ。
でもsコマンドの列全体となると、自明に一個の独立した正規表現じゃなく、
sコマンド(のみ)を使ったプログラムというしかないだろ。
0640デフォルトの名無しさん
2006/05/29(月) 20:01:02s/[0-9]/\x1B\$B\x23$1\x1B(B/g
とかで出来ないか?
0641デフォルトの名無しさん
2006/05/29(月) 22:48:050642デフォルトの名無しさん
2006/05/31(水) 18:19:10$hoge = "hehehehe";
hoge($hoge);
/*
何かをする関数
*/
function hoge() {
}
みたいになっている場合、/* 〜 */ を削除したいのだが、正規表現で
どう消したらいいのか教えていただけないでしょうか。
お願いします。
0643デフォルトの名無しさん
2006/05/31(水) 18:34:51s| /\* .*? \*/ ||gsx
0644デフォルトの名無しさん
2006/06/01(木) 15:45:57perl で全角文字の二バイト目が正規表現の特殊文字になってるとき
\x81^
を
\x81\^
とかに置換したいんです。(\)を付加したい
上記の場合は s/\x81\^/\x81\\\^/g;
で済むと思うのですが、一バイト目の範囲が結構広いので、
なんかうまく書く方法無いでしょうか?
お願い致します。
0645デフォルトの名無しさん
2006/06/01(木) 15:48:15sjis使うのをやめる
0646デフォルトの名無しさん
2006/06/01(木) 15:54:43use encoding 'Shift_JIS';
をやっておいたらどうか?
0647デフォルトの名無しさん
2006/06/03(土) 01:11:312. <br><font color=007f00>-155 (-5.39%)</font></td>
3. <br><font color=ff0020>-2000 (-4.22%)</font></td>
文中から1.と2.と3.のパターンをマッチさせたいのですが、どんな正規表現を用いたらいいのですか?
0648デフォルトの名無しさん
2006/06/03(土) 01:54:190649デフォルトの名無しさん
2006/06/03(土) 10:18:21なんか違わない
<font color=があるのと無い場合でマッチしないと思う
0650デフォルトの名無しさん
2006/06/03(土) 10:48:02「しないと思う」 じゃなくて 「しなかった」 だろ。
だって問題は<font color=じゃないからな。
ほらよ
<br>.*\(-?\d\.\d\d%\).*</td>
0651デフォルトの名無しさん
2006/06/03(土) 10:55:5612.53%とかはないのかな?
0652デフォルトの名無しさん
2006/06/03(土) 12:45:530653デフォルトの名無しさん
2006/06/03(土) 15:31:34/abc|def|ghi/
よりも
/abc/ || /def/ || /ghi/
の方が効率的だそうですが
何故ですか?
どちらも同じ効率のように見えるのですが
0654デフォルトの名無しさん
2006/06/03(土) 16:01:20後者は正規表現として扱う必要がないからindexとかstrpos的な処理に最適化される
0655デフォルトの名無しさん
2006/06/03(土) 21:56:35[[I 1][have [[two 2][children 3]4]5]
みたいにしたいのだけどどうすればいいですか。つまり、
内側の括弧から順番にまた左から右に順番に番号を振っていきたい。
while($str =~ s/\(.*?\)/"[$1 " . ++$num . "]"/eg) {1;}
こうやってもだめですた。
0656655
2006/06/03(土) 22:06:09$str='((I)(have ((two) (children)))';だた。
0657デフォルトの名無しさん
2006/06/04(日) 00:02:041 while $str =~ s/\(([^(]*?)\)/"[$1 ".++$num."]"/ge;
ちなみにここはPerlに限ったスレじゃないからな
0658デフォルトの名無しさん
2006/06/04(日) 00:26:46JP以外を捕まえたい場合は、どう記述すれば良いのでしょうか?
^apnic\|[^J][^P]\|ipv4\|.*allocated$だとAPが引っかかるし…
^apnic\|(^JP)\|ipv4\|.*allocated$だと駄目だし(´・ω・`)
0659デフォルトの名無しさん
2006/06/04(日) 01:02:09( | | 内が)「JP以外」ってのは
1文字と3文字以上の時はそのままマッチして、
2文字の時だけ「Jで始まらないか、Jで始まってPで終わらないもの」
と言い換えられる。
^apnic\|([^\|]|[^\|][^\|][^\|]+|[^J]|J[^P])\|ipv4\|.*allocated$
環境によっては
^apnic\|(?!JP\|).*?\|ipv4\|.*allocated$
が使える。
ざっと確認したけど間違ってるかも。
0660655
2006/06/04(日) 01:34:25偉そうな口調ですが、あなたのでやるとこうなります。
([I 1][have [[two 2] [children 3] 4] 5]
最初のが変換されてませんね。
それとあなたのと私のではどこが違うのでしょうか。
.*?=最短マッチだから。
0661655
2006/06/04(日) 03:03:120662653
2006/06/04(日) 09:00:22なるほど!そういうことでしたか
最適化ってこれのことだったのですね。ありがとうございました。
0663658
2006/06/04(日) 10:02:29レスどうもです。
その二つは動かなかったけど突破口が見えました(`・ω・´)
0664デフォルトの名無しさん
2006/06/04(日) 13:33:53各々微妙に正規表現に使えるメタキャラクタが違って萎えます。
「もういい加減統一した方がいいんじゃね?」
みたいな動きは無いんでしょうか
0665デフォルトの名無しさん
2006/06/04(日) 15:48:380666デフォルトの名無しさん
2006/06/04(日) 18:46:16例: 'まんこ\n\nなめなめ\nまんこ\n\n\nなめなめ' → 'まんこ\nなめなめまんこ\n\nなめなめ'
Firefox 1.5.0.4 の JavaScript 上での利用を考えています。
0667デフォルトの名無しさん
2006/06/04(日) 19:55:48javascriptではどう書くのかしらんが。
0668デフォルトの名無しさん
2006/06/04(日) 19:56:440669デフォルトの名無しさん
2006/06/04(日) 20:11:20無事動きました。ありがとうございます。
javascript:alert('まんこ\n\nなめなめ\nまんこ\n\n\nなめなめ'.replace(/\n(\n*)/g, '$1'));
0670デフォルトの名無しさん
2006/06/04(日) 20:19:300671デフォルトの名無しさん
2006/06/04(日) 20:35:500672デフォルトの名無しさん
2006/06/04(日) 22:12:030673デフォルトの名無しさん
2006/06/04(日) 22:22:120674デフォルトの名無しさん
2006/06/05(月) 11:31:22s/([0-9]{3})*/$1,/g でだめでした。
0675デフォルトの名無しさん
2006/06/05(月) 11:37:030676デフォルトの名無しさん
2006/06/05(月) 12:54:430677デフォルトの名無しさん
2006/06/05(月) 12:57:030678デフォルトの名無しさん
2006/06/05(月) 12:58:260679デフォルトの名無しさん
2006/06/05(月) 12:59:080680デフォルトの名無しさん
2006/06/05(月) 12:59:460681デフォルトの名無しさん
2006/06/05(月) 13:33:090682デフォルトの名無しさん
2006/06/05(月) 13:39:070683デフォルトの名無しさん
2006/06/05(月) 15:03:26$&をどういう意味なのでしょうか?
?:、?=はグルーピング除外はわかるのですが
0684デフォルトの名無しさん
2006/06/05(月) 16:16:33「正規表現」のところに書いてなかったら「特殊変数」のところに書いてあるかも。
正規表現全体に合致した文字列。
0685デフォルトの名無しさん
2006/06/05(月) 16:33:04すごいね。何桁でもいけた。
?:がなくてもいけたけど、いるのかな?
0686デフォルトの名無しさん
2006/06/05(月) 16:53:03正規表現全体に合致した文字列とは、グルーピングは関係なんですよね?
最初の\d+?に括弧がないから・・・。「,」がつくタイミングがいまいちよくわかりません。
正規表現全体ということは、\d+?と(?:\d{3})+が対象になるのでしょうか?
うーん・・・難しい。
0688デフォルトの名無しさん
2006/06/05(月) 18:49:26ちゃんとテストしような。
0689デフォルトの名無しさん
2006/06/05(月) 21:05:52あっ、失礼。
数字以外もある文字列だけで試してた。
0690デフォルトの名無しさん
2006/06/05(月) 22:30:03[^yy] は文字集合だったのね…
0691デフォルトの名無しさん
2006/06/05(月) 22:40:380692デフォルトの名無しさん
2006/06/05(月) 22:41:270694デフォルトの名無しさん
2006/06/06(火) 03:11:17Matcher matcher = pattern.matcher("<td>10,555</td>");
String string = matcher.replaceAll("");
System.out.println(string);
/*<td>10555</td> */
*************************************************************
Pattern pattern = Pattern.compile("<td>(.*)</td>");
Matcher matcher = pattern.matcher("<td>10,555</td>");
if(matcher.find())
System.out.println(matcher.group(1));
/*10,555*/
***************************************************************
上はカンマを除去します
下は<td></td>で囲まれた部分を抽出します
これ2つをくっつけて10555とプリントしたいんですがうまくいきません
どう書いたらいいでしょうか
0695デフォルトの名無しさん
2006/06/06(火) 22:37:32http://capslockabcjp.kitunebi.com/faq.html
0696デフォルトの名無しさん
2006/06/06(火) 23:08:03(A|B)でOK?
Perlとかだと真ん中切れてる棒なんだけどそれらしきやつがないんですよ
0697デフォルトの名無しさん
2006/06/06(火) 23:20:19(文字コードによっては区別されるかもしれないが)
0699デフォルトの名無しさん
2006/06/07(水) 02:28:18みた。
いきなりで Traditional NFAとPOSIX NFAの動作の違いの説明というのには
面食らったけど、これから内容が充実していくのを期待するっす。
ところで、(フリーソフトウェアの)mawkもPOSIX NFAタイプのエンジンを
使っていたような。他にはあるかな?
0700デフォルトの名無しさん
2006/06/07(水) 02:31:500701696
2006/06/07(水) 09:06:240702デフォルトの名無しさん
2006/06/07(水) 12:03:100703デフォルトの名無しさん
2006/06/07(水) 12:18:230704デフォルトの名無しさん
2006/06/07(水) 12:28:000705デフォルトの名無しさん
2006/06/07(水) 12:39:380706デフォルトの名無しさん
2006/06/07(水) 12:40:57時間量に関しては入力の度にエンジン側の負荷を取れるようにすればチェックができる。
開発してみっかな。
0707デフォルトの名無しさん
2006/06/07(水) 13:39:140708デフォルトの名無しさん
2006/06/07(水) 13:43:200709デフォルトの名無しさん
2006/06/07(水) 14:07:120710デフォルトの名無しさん
2006/06/07(水) 14:33:46オマエにあってもサーバには無いんだよ
0711デフォルトの名無しさん
2006/06/07(水) 18:51:090712デフォルトの名無しさん
2006/06/07(水) 19:00:170713デフォルトの名無しさん
2006/06/07(水) 19:19:07正規表現の組み込み先の言語のリファレンスマニュアル読むのが一番
正規表現とはそもなんぞやという意味でのリファレンスならオライリー本一択だろうな
いくつかのメジャーな言語における実装による差異や細かい動作も載ってるぞ
Amazon.co.jp:詳説 正規表現 第2版: 本
ttp://www.amazon.co.jp/exec/obidos/ASIN/4873111307/
高価で込み入った本なので半年単位で読み解くことを推奨
薄いリファレンス本がないわけではないけどな
Amazon.co.jp:正規表現デスクトップリファレンス: 本
ttp://www.amazon.co.jp/exec/obidos/ASIN/4873111706/
0714デフォルトの名無しさん
2006/06/07(水) 19:48:51一度でも自分で正規表現を実装すれば
効率の良い正規表現とかも分かるだろうね。
0715デフォルトの名無しさん
2006/06/07(水) 21:37:06とかっていうのを正規表現で置換して
x[0], x[1], x[2], ......., x[8], x[9]
という風に置換したいのですがどうすればよいんでしょうか?
検索だけなら
/x[0-9]/
でできることは分かっているのですが・・・
0716デフォルトの名無しさん
2006/06/07(水) 21:42:300717デフォルトの名無しさん
2006/06/08(木) 10:00:10public org.apache.commons.jxpath.ri.compiler.Expression[] org.apache.commons.jxpath.ri.compiler.Operation.getArguments()
}
を
org.apache.commons.jxpath.ri.compiler.CoreOperationMod= {
public Expression[] getArguments()
}
に変更するため、
^(?>:\w+)(?:\s+)\\w+\.)+(?!\w+=) を使用しましたがだめでした。
アドバイスをお願いします・・・
0718デフォルトの名無しさん
2006/06/08(木) 10:08:00(\w+\.)+(?!\w+=)だと、
org.apache.commons.jxpath.ri.compiler.CoreOperationMod= {
が
compiler.CoreOperationMod= {
になっちゃいます。
(\w+\.)+で強欲マッチ? しているのいに、なんで「org」からが対象にならないのでしょうか?
0719デフォルトの名無しさん
2006/06/08(木) 12:16:470720デフォルトの名無しさん
2006/06/08(木) 13:24:37((\w+\.)++)(?!\w+=) で行けました。
ん〜正規表現は奥が深い
0721デフォルトの名無しさん
2006/06/08(木) 15:15:48(?<!regex) → ○
(?!regex) → ○
(!regex) → ×
0722デフォルトの名無しさん
2006/06/08(木) 15:36:580723デフォルトの名無しさん
2006/06/08(木) 16:20:580724デフォルトの名無しさん
2006/06/08(木) 17:10:16それはperlとかの話でしょ。
純粋な正規表現ではない。
~~~~
0725デフォルトの名無しさん
2006/06/08(木) 21:15:10正規表現は補集合についても閉じてるからそのような正規表現は存在する
という意味でできる。でもきっとめんどくさいからやめとけ。
^[^e]*(e[^rl][^e]*)*e?$
「erまたはelが文中につく」正規表現なら簡単に書けるだろうから
あとはマッチ成功と失敗をよみかえればOK。
0726・∀・)っ-○◎● ◆toBASh....
2006/06/08(木) 22:19:36(x([0-9]))で捕獲してx\2でおkじゃね?
複数含まれる場合はまぁ工夫してくれ
0727デフォルトの名無しさん
2006/06/09(金) 10:51:02これでいける。
^(.(?!el|er))*$
ただ先頭にelが付くとだめだけど。それ以外は問題なし。
正規表現の文字列否定は方実現手段がしょぼいからなぁ・・・
0728デフォルトの名無しさん
2006/06/09(金) 10:56:180729デフォルトの名無しさん
2006/06/09(金) 10:59:560730デフォルトの名無しさん
2006/06/09(金) 11:24:250731デフォルトの名無しさん
2006/06/09(金) 11:32:570732デフォルトの名無しさん
2006/06/09(金) 11:38:01否定の場合描けない可能性もあるわけで
0733デフォルトの名無しさん
2006/06/09(金) 11:46:10s/\/\*.*?\*\///g
/*comment*/を
に置換することはできるでしょうか。
コメント内の文字1つ1つをスペースに置換したいです。
0734デフォルトの名無しさん
2006/06/09(金) 12:09:43Cのコメント処理は正規表現で扱うには不向きです。
あとで、そういうときにどうやって図面引いて
どうやってそこからプログラムを起こすかの手順を
FAQページに書いときまつ。
0735デフォルトの名無しさん
2006/06/09(金) 12:58:29あ、なるほどね。最初からそう言ってくれい。
いきなり「図面」ってなんじゃい?と思ったよ。
0736デフォルトの名無しさん
2006/06/09(金) 13:04:11Perl ならこんな感じ?
s/\/\*(.*?)\*\//" " x length($1)/ge;
0737デフォルトの名無しさん
2006/06/09(金) 13:11:57すんません。自分javaです
0738デフォルトの名無しさん
2006/06/09(金) 13:14:26で、マッチした文字列の長さ分の空白文字を並べれば良いんじゃないの?
0739デフォルトの名無しさん
2006/06/09(金) 13:15:43そこまで申告しといた方が良いと思われ。
0740デフォルトの名無しさん
2006/06/09(金) 13:44:13import java.util.regex.*;
Pattern pattern = Pattern.compile("/\\*.*?\\*/");
Matcher matcher = pattern.matcher("/* comment */");
StringBuffer buffer = new StringBuffer();
while (matcher.find()) {
char[] spaces = new char[matcher.group().length()];
java.util.Arrays.fill(spaces, ' ');
matcher.appendReplacement(buffer, new String(spaces));
}
matcher.appendTail(buffer);
System.out.println(buffer.toString());
0741デフォルトの名無しさん
2006/06/09(金) 16:20:00javaのPerl5Utilでx length($1)ができると思ったのですが、だめでした・・・
0742デフォルトの名無しさん
2006/06/11(日) 04:16:20ただし、特定のデリミタ("")が含まれてる場合はその中の文字は置換したくない
んですがうまくいきません。
(php)
$code = preg_replace('/([^\s"]\w+[^\s"])/', 'replace', $src);
これだと$srcに「a」が入ってきてもreplaceに置換されません。
(aaaだとreplaceになるんですが)
どのように書けば良いのでしょうか。
0743デフォルトの名無しさん
2006/06/11(日) 04:31:440744デフォルトの名無しさん
2006/06/11(日) 11:27:23先読みの類が使えれば簡単に書ける。perlならこう。PHPでどう書くかは知らない。
s/(?<!["\w])\w+(?!["\w])/replace/g
「"」が必ず対になっていることを仮定してよければ
s/(^|[^"\w])\w+/$1replace/g
でもいいだろう。末尾側の区切りを敢えて調べないのは、
先読み使わずに食ってしまうと
foo,bar
見たいな時に困るから。
0745デフォルトの名無しさん
2006/06/12(月) 17:54:05http://capslockabcjp.kitunebi.com/faq.html
0746デフォルトの名無しさん
2006/06/12(月) 23:12:16英文のみの件名を削除したいのですが
[a-z0-9]でいいのでしょうか?
大文字も小文字も削除したいのですが。
0747デフォルトの名無しさん
2006/06/13(火) 02:00:23どんなツールで正規表現使おうとしているかくらい書こうよ。
で英文には , とか . もあったりはしないか?
とりあえず [a-z0-9]じゃあふつーは(別のところで指定しない限り)
大文字は含まれない。
0748デフォルトの名無しさん
2006/06/13(火) 02:08:14"最高女性の自宅リアル映像を無料生中継にて配信中!"
0749デフォルトの名無しさん
2006/06/13(火) 11:17:35英文SPAMだけ対応すればいいのなら
メールヘッダの国コードだか言語設定だか見て日本以外なら弾くって方が楽
と、オレは聞いた
0750デフォルトの名無しさん
2006/06/13(火) 17:53:25すいません、
spam mail kellerというソフトなんです
英文のみの件名を削除したいのですが...
もちろん日本語が含まれている場合は削除しない
にしたいのですが...
[a-z0-9]では、日本語が含まれている場合でも
削除されてしまうのでしょうか?
0751デフォルトの名無しさん
2006/06/13(火) 17:57:020752デフォルトの名無しさん
2006/06/13(火) 18:26:34珍しい名前のソフトだな。つーか、そもそもkellerってなんだ?
0753デフォルトの名無しさん
2006/06/13(火) 18:43:14リファレンスマニュアルへのURLとか抜粋が無ければ対処できない。
つーかあそこのサイトにサポート掲示板の過去ログCGIあるんだけど検索したの?
0754デフォルトの名無しさん
2006/06/13(火) 18:50:53そのソフトがどういう実装してるか分からないが
海外製のソフトは大抵マルチバイト環境を考慮してないので(略)
というか、件名のみでSPAMと判断するなよ。
0755デフォルトの名無しさん
2006/06/13(火) 21:58:25女性 をNGワードにする
ようこそ…… 『男の世界』へ……
0756デフォルトの名無しさん
2006/06/14(水) 16:43:31Perl の正規表現を使ってもいいのなら
^[\x20-\x7e]+$
かな。但しメールの Subject: って複数行に渡るこういう書き方も出来るんだよね。
Subject: aaaa
bbbb
cccc
これはおそらく画面に出る時に aaaa bbbb cccc と出てくる。つまり、複数行に
渡る Subject: だったとしてもメールソフトの側で1行に直して出すということだ。
こういったものに対してどのように処理するのかによってマッチする正規表現が変わる
可能性がある。1行に直した後の行に対するものか、それともその前の状態に対する
ものかの違いだ。
0757デフォルトの名無しさん
2006/06/14(水) 18:43:240758デフォルトの名無しさん
2006/06/15(木) 03:14:220759デフォルトの名無しさん
2006/06/15(木) 03:16:290760デフォルトの名無しさん
2006/06/15(木) 03:20:550761デフォルトの名無しさん
2006/06/15(木) 06:08:27でも>757は常識だね。
0762デフォルトの名無しさん
2006/06/16(金) 22:46:550763デフォルトの名無しさん
2006/06/16(金) 22:52:140764デフォルトの名無しさん
2006/06/16(金) 22:57:18javaです。
文字列に「"」が入ってる場合にはどうしたらいいんでしょうか?
0765764
2006/06/16(金) 23:02:300766デフォルトの名無しさん
2006/06/17(土) 05:36:34>>765
自己解決した場合も、解決方法自己レスしとけっつーの。
0767766
2006/06/17(土) 07:34:380768デフォルトの名無しさん
2006/06/21(水) 02:48:08参考2:正規表現エンジン設計(遅延評価DFA)
をなんとなく追加
0769デフォルトの名無しさん
2006/06/21(水) 13:29:58乙。
個人的に興味のあるテクなんでよかった。
欲をいえばもう少し詳しく。
あと、現行のglibcのregexも、遅延したdfa構築を
しているみたいなんだけど、後方参照も
使えるしどうなんだろうか?
自分で読め? ごもっとも。
ところで
捨てざろう得ない
は
捨てざるを得ない
では?
0770デフォルトの名無しさん
2006/06/21(水) 13:33:24そういうつっこみはそのサイトの管理者に言えよ
0771デフォルトの名無しさん
2006/06/21(水) 16:16:42http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/10657
私の記憶が正しければGNU grepは、使える場合にはDFAを使うこと
で高速化していたと思います。
たとえば、egrepでもDFA型で対応できないバックリファレンスを含
むものは、NFA型を使うことになるので同じような状況で、同じよ
うな理由で失敗します。
0772769
2006/06/22(木) 00:11:36すまん。
メールでの連絡先はあったけど、直接コメントとかは書けないみたいだったし、
捨てアド作ってメールするのもなあと思ったんで。
>>771
GNU grep のregexは現行の glic (2.3.6だっけ?) のregexとはぜんぜん別物です
(grepの使ってるやつのほうが古い)。でも多分に俺の勘違いっぽいので
忘れてください。
0773デフォルトの名無しさん
2006/06/29(木) 18:52:46ser[A-Za-z0-9]{15}
こんな風にしたんだけど、[A-Za-z0-9]の部分を11回または15回繰り返すようにはどうすればいい?
0774デフォルトの名無しさん
2006/06/29(木) 19:02:21といったあたりが素直じゃないか。
ser([A-Za-z0-9]{11}|[A-Za-z0-9][15})
ser[A-Za-z0-9]{11}([A-Za-z0-9]{4})?
0776デフォルトの名無しさん
2006/07/04(火) 06:15:14正規言語は入れ子構造が許されないということですけど
正規表現では入れ子構造が表現できるではないでつか。
そこら辺どうなってんの。
0777デフォルトの名無しさん
2006/07/04(火) 08:20:21拡張しまくったらつきぬけた。
名前だけはそのまま残ってる。
0778デフォルトの名無しさん
2006/07/04(火) 13:59:56http://pc7.2ch.net/test/read.cgi/software/1143621919/
より誘導されてきました。
正規表現で
「http://」で始まらず、「.html」で終わる文字列
にマッチさせるにはどうすればいいでしょうか。
言語はPerlです。
0779デフォルトの名無しさん
2006/07/04(火) 15:02:21上のは参考にしないように。間違ってたら誰か教えて。
0780デフォルトの名無しさん
2006/07/04(火) 15:13:03!m/^http:\/\// && m/.html$/
とかやっちゃうかな?
0781778
2006/07/04(火) 15:33:30^(?!http:\/\/).*\.html$
でできました。
0782デフォルトの名無しさん
2006/07/05(水) 00:42:39では、正規表現は、文脈自由文法なのでつか。
0783デフォルトの名無しさん
2006/07/05(水) 00:55:060784デフォルトの名無しさん
2006/07/05(水) 00:56:34文脈自由法の解析能力を持つだろ。
そういう意味だと現実の正規表現エンジンはそうなってない。
(典型的なNFAエンジンはスタックを持つけどパーサのスタックとは違う)
もしやるなら
/[.abc(de|[.fg.])+.]+/
こんな力業ができそうだけど、コスト的に実用性に疑問符がつく。
0785デフォルトの名無しさん
2006/07/05(水) 01:06:05なーほど(メモメモ。一晩、じっくり考えて見まつ。
外側の[ ]の中のものはみんな文字リテラルに解釈されるんじゃないのかなぁ。
0786デフォルトの名無しさん
2006/07/05(水) 01:08:20正規表現・コンパイラは便利な性質を持つ仮想機械の設計論であって
自然法則の発見とか、自然現象の解析ではないのだから
何が真実で何が誤りということはないと思う。
0787デフォルトの名無しさん
2006/07/05(水) 01:19:31しかしChomskyは、自然言語は入れ子構造があるから正規言語ではなくて
文脈自由言語だとして生成文法を確立した。ところが、正規表現が
正規言語を超えて入れ子を扱えるようになったのなら、自然現象(自然
言語)の解析に関して、どちらが真でどちらが偽かといった問題も
もう一度論じられていいはず。
0788デフォルトの名無しさん
2006/07/05(水) 02:44:28言語理論の正規表現と、このスレとかで一般に参照されてる工学的応用の面から拡張した
正規表現は区別して論じてください。
理論の正規表現が入れ子を扱えるように変わった(時代を経てそう進化した)わけじゃない。
工学的応用としてのパターンマッチ技術上、そいういう拡張が一般化しただけですよ。
だから自然言語の解析を理論の点から再度論じても、再度同じ結論が出るに過ぎないのでは。
0789デフォルトの名無しさん
2006/07/05(水) 11:04:51自然言語処理でも結局正規表現は文脈自由文法ということで
自然言語を表現する為に使ってる。
自然言語処理のプログラムに、なぜ正規表現を使うんですか?
という野暮な質問は来ない。
0790デフォルトの名無しさん
2006/07/05(水) 13:52:43hoge<input type="hidden" value="DEF-456" />
上記の value 部分だけを抽出したいのですが、どのようにすればいいのでしょうか。
秀丸では <input.*value=\"(.*)\"/> で動くのですが、PHP では動いてくれませんでした……。
0791デフォルトの名無しさん
2006/07/05(水) 14:21:24<input.*value=\"(.*)\" \/>
というかその言語での正規表現の基本部分の簡単な書き方の勉強はしたほうがいい。
普段のやりたいことの9割まではそのときの1時間程度の勉強で覚えたことで済む。
残りの1割の部分で聞いたり調べたり悩んだり諦めたりしろ。時間もったいないし。
0792デフォルトの名無しさん
2006/07/07(金) 02:18:04これだけでもいいんじゃないの?
0793デフォルトの名無しさん
2006/07/07(金) 03:54:280794デフォルトの名無しさん
2006/07/07(金) 19:50:44>>790
>上記の value 部分だけを抽出したいのですが
0795デフォルトの名無しさん
2006/07/07(金) 20:04:03ぶっちゃけ例でだけなら \"(.*)\"\/ で動作するわけだし
きっと他の部分でコレでは駄目な理由があるんだろう
0796デフォルトの名無しさん
2006/07/07(金) 20:06:39それじゃ type= も抜いちゃうじゃん
0797デフォルトの名無しさん
2006/07/07(金) 21:42:01PHPのスクリプトのバグか
漢字のエンコード設定他でhogeの部分でのハングとか、そういう雰囲気
0798デフォルトの名無しさん
2006/07/07(金) 21:45:34> 上 記 のvalue部分
0799デフォルトの名無しさん
2006/07/08(土) 03:59:23使ってる関数はなに?
PHPにはPerl互換のやつとPosixのヤツがあるよ
これは微妙に動作が違う
実際に試して無いけど、Perl互換のヤツ使ってて / が正規表現の開始or終了にみなされてるとか・・・
とりあえずソース見せてよ
0800デフォルトの名無しさん
2006/07/08(土) 04:01:35といった置換は出来ますか?
0801デフォルトの名無しさん
2006/07/08(土) 09:03:35Perlだけど、
$line="AXYDA'XYDAAXYA'XA'A'";
$2? $line =~ s/$&/B/ : $line =~ s/$&/C/ while $line =~ /(A)(')?/;
print $line, "\n";
0802デフォルトの名無しさん
2006/07/08(土) 09:21:12s/A'/C/g;
s/A/B/g;
0803デフォルトの名無しさん
2006/07/08(土) 10:28:270804デフォルトの名無しさん
2006/07/08(土) 10:36:200805デフォルトの名無しさん
2006/07/08(土) 11:27:37病院に急げ!
0806デフォルトの名無しさん
2006/07/08(土) 12:02:59803がこのスレのどの流れ、どのレスを受けての書き込みなのか、
わからないのだが。
0807デフォルトの名無しさん
2006/07/08(土) 12:32:440808デフォルトの名無しさん
2006/07/08(土) 13:01:35s/(?:(A)|(A'))/(defined $1)? B: C/ge
のように同時に置換しないと場合によってはおかしくならない?
A,A',B,Cが文字通りその文字列ならそれでいいけど。
0809デフォルトの名無しさん
2006/07/08(土) 13:42:310810デフォルトの名無しさん
2006/07/08(土) 14:25:19802の正規表現がPerlの方言って事ですか?
0811デフォルトの名無しさん
2006/07/08(土) 15:03:04日本語対応の文字コードってUTF?
0812デフォルトの名無しさん
2006/07/08(土) 15:12:360813デフォルトの名無しさん
2006/07/08(土) 18:52:03日本工業標準規格だし。
0814デフォルトの名無しさん
2006/07/09(日) 01:31:25JISで決まっている文字コードってひとつじゃないじゃんw
0815デフォルトの名無しさん
2006/07/09(日) 01:45:050816デフォルトの名無しさん
2006/07/09(日) 09:02:09「とりあえずサポートするけど動かなかったらごめんよ」
というスタンスでいいじゃん。 携帯ブラウザ氏ねよ。全滅しろ。ちくしょう
0817デフォルトの名無しさん
2006/07/09(日) 09:20:130818デフォルトの名無しさん
2006/07/09(日) 10:07:410819デフォルトの名無しさん
2006/07/09(日) 11:32:31みんなが困ってるのを傍目に見ながら、どんな文字コードでも
多言語でも簡単に処理できてる漏れ様にとっては、このままの方が
ありがたいね。
0820デフォルトの名無しさん
2006/07/09(日) 11:50:20フン、いいな暇そうで
0821デフォルトの名無しさん
2006/07/10(月) 00:03:09UTF-8(Webでよく使われる)
UTF-7(DBで見る)
UTF-16(Windowsアプリ UTF-16というよりUNICODEだけど)
0822デフォルトの名無しさん
2006/07/10(月) 00:12:40UTF-8:テキトーなパッチでとりあえずソフトは動くだろう。完全対応が大変。
UCS-4:ある程度ソフトの再設計が必要になるだろう。完全対応はラク。
0823デフォルトの名無しさん
2006/07/10(月) 06:29:29ン、いいな暇そうで
0824デフォルトの名無しさん
2006/07/10(月) 08:58:12日本じゃなければそれでいいのかもしれないが、日本だと
JISかMSか決める
決めても違うほうで作るバカがいるので直させる
やりとりする外部のシステムが両方混在していてめちゃくちゃ
とかいうどうでもいいところで工数を無駄に消費するのだった
0825デフォルトの名無しさん
2006/07/11(火) 16:39:050826デフォルトの名無しさん
2006/07/12(水) 11:37:240827826
2006/07/12(水) 11:47:37状態: 2002/03/26 [1-2] 2003/03/26 [1-2] 2004/03/26 [1-10], 2005/03/28 [1-2], 2006/03/28 [1-2]<br>
状態: なし</td>
状態: 1991/03/26 [1-1]</small>
状態: 1988/03/28 [1-1] 1991/03/26 [1-5]</small>
状態: 1983/03/28 [1-1] 1984/03/28 [1-7] 1985/03/27 [1-4] 1986/03/27 [1-5] 1987/03/27 [1-6]<br> 1989/03/28 [1-5]</small>
データは上の5種類です。5行目は途中で<br>がありますが</small>の前まで取得する必要があります。
状態:より後ろのデータを取得したいのですがどういう表記がいいのでしょうか?
状態:+([^<]+)<br></small>|状態:+([^<]+)</small>|状態:+([^<]+)</td>
ではうまくいきませんでした。
0828デフォルトの名無しさん
2006/07/12(水) 12:21:32行末の <br> や </td> が要らないんであれば
状態:(.*)<
で良さそうだけど、行末の </small> だけは要らないとかなら
いったん行末まで全部とって </small> だけ削除したほうが簡単かも。
0829826
2006/07/12(水) 12:51:23行末のタグは必要ありませんが、それだと5行目の途中で<br>
があると、その前までしか取得できませんね。
.
0830デフォルトの名無しさん
2006/07/12(水) 12:54:38だったりして。
0831デフォルトの名無しさん
2006/07/12(水) 12:55:230832デフォルトの名無しさん
2006/07/12(水) 13:26:57getcharで一文字ずつ比較?
0833デフォルトの名無しさん
2006/07/12(水) 14:30:54で一度カッコの中を取り出して、それに対して
(.*)</small>
で一致すればカッコの内容で置き換え、
さらに、
(.*)<.*>
で行末のタグは切ればよいんでないの?
0834デフォルトの名無しさん
2006/07/12(水) 20:55:550835デフォルトの名無しさん
2006/07/13(木) 00:00:22空の行があったら、その前の行の最後に「\」を表示させたいのですが
何か良い手立てはありませんでしょうか?下のが例です。
>あああ
>
>いいい
↓
>あああ\
>
>いいい
0836これではきっとダメだろう
2006/07/13(木) 01:14:420837デフォルトの名無しさん
2006/07/13(木) 01:21:540838デフォルトの名無しさん
2006/07/13(木) 01:57:14え?VBの正規表現ってそうなの?
普通は最長一致だから一番最後の < にマッチするはずなんだけど。
0839デフォルトの名無しさん
2006/07/13(木) 03:38:112chブラウザのV2Cで非表示設定をするための正規表現を考えています。
正規表現のルールはJava一般の物が適用されるらしいです。
例えば
ぬるぽ ぬるぽ ぬるぽ ぬるぽ
というような同じ語句の繰り返しだけのレスを非表示にしたくて
今は
(?:^|^\n+)(.{4,}[ \s]*)\1{3,}
としています。
しかしこれだと
あああああああああああああああ
と書いてある程度でも非表示になってしまいます。
そこで
.{4,}の部分を、違う文字の連続という風にできればいいなと
思っているのですが、そんな事は可能でしょうか。
0840デフォルトの名無しさん
2006/07/13(木) 04:12:05([.ぬるぽ.]+)で可能だけどおそらくサポートされていない。
エイホらの定義から外れてしまうので正規表現と呼べるかも微妙。
0841839
2006/07/13(木) 06:21:16ちょっと変えて下記のように直しました。
(?:^|^\n+)([^ \s]{3,})[ \s]*\1[ \s]*\1
これだと
ぬるぽ ぬるぽ ぬるぽ
ぬるぽ ぬるぽ ぬるぽ
というような場合に
「ぬるぽ」に([^ \s]{3,})が一致して\1に記憶されると思います。
\1が繰り返されるが
\1の区切りは、全角スペースの場合もあれば改行の場合もある、
といった場合はどう表現したらいいんでしょう。
0842デフォルトの名無しさん
2006/07/13(木) 06:43:020843デフォルトの名無しさん
2006/07/13(木) 18:47:09JISかISOで標準正規表現規格を制定してみんな従えば便利なのにな。
0844デフォルトの名無しさん
2006/07/14(金) 02:38:33IEEE (POSIX) は公的機関じゃないからだめってことか?
0845デフォルトの名無しさん
2006/07/14(金) 11:02:050846839
2006/07/14(金) 23:40:37ぬるぽ ぬるぽ ぬるぽ ぬるぽ(1行に4つ)にも
ぬるぽ ぬるぽ ぬるぽ
ぬるぽ ぬるぽ ぬるぽ
(1行は3つだが次の行まで数えると4つ以上)
のどちらにもマッチするにはどのように書けばいいでしょうか?
0847デフォルトの名無しさん
2006/07/15(土) 00:39:440848デフォルトの名無しさん
2006/07/15(土) 11:46:59おまいは勉強してるのか
0849839
2006/07/16(日) 10:34:01レスありがとうございます。
自分は
(正規表現){4,}
と書いてあった場合、まず最初に1つ
(正規表現)に一致するものがあったら、
それと全く同じ物が4つ以上続く場合にマッチするのかと思っていたのですが、
繰り返しごとに(正規表現)にマッチするか判断されるんですね。
今度はその「ぬるぽ」が「ぬるぽ」とは限らないが
毎回同じ言葉の場合にどう書けばいいのかわかりません。orz
ぬるぽ ぬるぽ ぬるぽ でも
ほげげげ ほげげげ ほげげげ でも
はががが はががが はががが でも
マッチするが
ぬるぽ ほげげげ はががが
にはマッチしないようにするにはどうすればいいんでしょう。
>>847の「ぬるぽ」を単純に「.{3,}」に置き換えると
ぬるぽ ほげげげ はががが
にもマッチしてしましますよね。
>>848
すいません。
オライリーの正規表現の本とか買ってちゃんと勉強すれば
わかる事なんですよね。きっと。orz
0850デフォルトの名無しさん
2006/07/16(日) 11:18:03>>841
0851デフォルトの名無しさん
2006/07/16(日) 17:40:22例えば
select * from JouBun where title regexp '^第[1-9]+[0-9]?条'
みたいな感じです。
上記の例はうまく行くのですが、
select * from JouBun where title regexp '^第[1-9]+[0-9]?章'
となると全く検索されてきません。
defaultのcharacterはsjisを使用してます。どなたかご存知の方いらっしゃいましたらお教え願えませんでしょうか?
よろしくお願いいたします。
0852デフォルトの名無しさん
2006/07/16(日) 17:48:110853デフォルトの名無しさん
2006/07/17(月) 03:34:52どうやらその通りでした。
select * from JouBun where title regexp '^[ ]?第[1-9]+[0-9]?章'
でものの見事にマッチ!!
ありがとうございました。
でも条の前にも半角スペースあったんですけどね・・・・
一つだけの半角スペースは無視するけど、2つ以上だと無視しないって事でしょうか・・・
0854デフォルトの名無しさん
2006/07/19(水) 15:13:20Windowsで作られたテキストファイルの中に、
ファイル名をフルパスで書かれた行があります。
ここからファイル名を除いたパスを抽出したいのですが
どのようにすればいいのでしょうか?
例:
c:\xxx\test.txt > c:\xxx\
e:\xxx\yyy\zzz\readme.txt > e:\xxx\yyy\zzz\
ドライブやフォルダの階層はまちまちです。
よろしくお願いします。
0855854
2006/07/19(水) 15:26:01フルパスが書かれてる行は指定できるようになったので、
テキスト全体から抽出するための条件は考えなくていいです。
ドライブ名やフォルダの階層がまちまちの、一行のフルパスから、
ファイル名を除いたパス名だけを抽出する方法を教えてください。
0856デフォルトの名無しさん
2006/07/19(水) 15:30:480857854
2006/07/19(水) 15:46:14本当に助かりました。
0858デフォルトの名無しさん
2006/07/21(金) 09:06:39テキストファイルが ShiftJIS だとして
C:\表\abc\123.txt
とかは失敗するが OK ?
0859デフォルトの名無しさん
2006/07/21(金) 13:48:14Perlはそういうのも考慮させることができるよ(他の言語だとどうだか知らないが)。
Perl の場合は use encoding 'shift_jis'; をプログラムに書いておくか、または
コマンドラインで -Mencoding=shift_jis のオプションを付ければいい。
0860デフォルトの名無しさん
2006/07/21(金) 15:24:510861デフォルトの名無しさん
2006/07/22(土) 05:07:27どいつもこいつも回答者を超能力者か何かと勘違いしている
0862デフォルトの名無しさん
2006/07/22(土) 06:31:080863デフォルトの名無しさん
2006/07/22(土) 06:43:310864デフォルトの名無しさん
2006/07/22(土) 11:15:05どこにお宝zipがあるか探しちゃったじゃねーか。
0865デフォルトの名無しさん
2006/07/22(土) 15:02:360866デフォルトの名無しさん
2006/07/22(土) 15:03:150867デフォルトの名無しさん
2006/07/22(土) 19:03:29Perlでは\Wと\wの間(またはその逆)と書いてあった
0868デフォルトの名無しさん
2006/07/22(土) 19:28:470869デフォルトの名無しさん
2006/07/23(日) 00:11:13\W\.(jpg|gif|png)$
な感じかと思って試行錯誤しましたがダメでした・・・
0870デフォルトの名無しさん
2006/07/23(日) 00:12:12諦めろ
夕日が呼んでるぜ
0871デフォルトの名無しさん
2006/07/23(日) 00:15:520872デフォルトの名無しさん
2006/07/23(日) 03:38:08/^.+\.(?!(jpg|gif|png)).+$/
>>116-117参照汁
0873デフォルトの名無しさん
2006/07/23(日) 03:39:17の>>116-117だど。
0874デフォルトの名無しさん
2006/07/23(日) 03:47:180875デフォルトの名無しさん
2006/07/23(日) 09:37:55それってperl固有でねーですか。汎用的には無理?
0876デフォルトの名無しさん
2006/07/23(日) 10:02:54You の使っている処理系で動くように書けば汎用的ってことになるんですか
その割にどのツールで使いたい etc の情報が皆無なんですが
0877デフォルトの名無しさん
2006/07/23(日) 12:38:100878デフォルトの名無しさん
2006/07/23(日) 17:36:280879デフォルトの名無しさん
2006/07/23(日) 20:18:510880デフォルトの名無しさん
2006/07/25(火) 09:38:17> /^.+\.(?!(jpg|gif|png)).+$/
は/^.+\.(?!(jpg|gif|png))[^\.]+$/の方がいいね。
0881デフォルトの名無しさん
2006/07/25(火) 09:38:360882デフォルトの名無しさん
2006/07/25(火) 19:32:41>>880
foo.jpgfとかの拡張子がjpgじゃないファイル名まではじいちゃうのでまずい
/^.+\.(?!(jpg$|gif$|png$))[^\.]+$/
でどうかな?
0883デフォルトの名無しさん
2006/08/06(日) 00:27:09うん、それがいいと思う。
0884デフォルトの名無しさん
2006/08/12(土) 22:46:42<a href="./nikki.cgi?no=060804">2006/08/04</a>
<a href="./nikki.cgi?no=060801">2006/08/01</a>
・
・
<a href="./nikki.cgi?no=040101">2004/01/01</a>
というリストがあって、no=の後の番号を抽出したいのですが、
<a href="./nikki.cgi?no=(.*)">20ではうまく抽出できませんでした。
ご教授いただければ幸いです。
0885デフォルトの名無しさん
2006/08/12(土) 22:50:510886デフォルトの名無しさん
2006/08/12(土) 22:57:36?を\?に変えたところ、うまくいきました。
ありがとうございます。
0887デフォルトの名無しさん
2006/08/18(金) 13:34:24http://oraclesqlpuzzle.hp.infoseek.co.jp/regex/index.html
0888デフォルトの名無しさん
2006/08/18(金) 14:23:35http://oraclesqlpuzzle.hp.infoseek.co.jp/regex/regex-2-4.html
これなんか
(?<!/)$
を
/
に置換
とかしなくても
([^/])$
を
$1/
で十分なのに。
0889デフォルトの名無しさん
2006/08/18(金) 14:28:030890デフォルトの名無しさん
2006/08/18(金) 14:59:09.*
2chAA以外のものにもマッチするけどな。
0891デフォルトの名無しさん
2006/08/19(土) 12:22:04正規表現を教えてくれたらお礼に私
0892デフォルトの名無しさん
2006/08/19(土) 12:35:050893デフォルトの名無しさん
2006/08/19(土) 13:09:370894デフォルトの名無しさん
2006/08/19(土) 13:11:18255\.255\.1([6-8]\d)|(9[01])\.([0-9]$)|([1-9]\d$)|(1[1-9]\d[1-9]\d$)|(2[0-4]\d$)|(25[0-5]$)
255\.255\.1([6-8]\d)|(9[01])\.(\d$)|([1-9]\d$)|(1\d\d$)|(2[0-4]\d$)|(25[0-5]$)
0897891
2006/08/19(土) 14:13:05255\.255\.1([6-8]\d|9[01])\.([01]?\d\d?|2[0-4]\d|25[0-5])
0898デフォルトの名無しさん
2006/08/19(土) 15:55:570899デフォルトの名無しさん
2006/08/19(土) 16:49:270900デフォルトの名無しさん
2006/08/20(日) 00:21:25>>891はその典型。
0901デフォルトの名無しさん
2006/08/20(日) 02:42:04実運用上、正規のIPアドレスしか評価しないなら冗長な第四も不要になる。
0902デフォルトの名無しさん
2006/08/20(日) 03:32:230903デフォルトの名無しさん
2006/08/20(日) 10:46:29理解してるが、それって正規表現使うかどうかと関係ない話だなw
0904デフォルトの名無しさん
2006/08/20(日) 13:26:480905デフォルトの名無しさん
2006/08/24(木) 13:15:32正規表現 part3
関連サイト
正規表現メモ
http://www.kt.rim.or.jp/~kbk/regex/regex.html
Perl正規表現雑技
http://www.din.or.jp/~ohzaki/regex.htm
Regular Expression(Riue ちゃんの正規表現講座)
http://www.sixnine.net/regexp/
正規表現パズル
http://oraclesqlpuzzle.hp.infoseek.co.jp/regex/
詳説 正規表現
http://www.oreilly.co.jp/books/4873111307/
0906デフォルトの名無しさん
2006/08/24(木) 13:58:02正規表現プログラミングFAQ
http://capslockabcjp.kitunebi.com/faq.html
0907デフォルトの名無しさん
2006/08/24(木) 15:39:22http://msdn.microsoft.com/library/ja/script56/html/js56reconIntroductionToRegularExpressions.asp
.NET Framework 正規表現言語要素
http://msdn.microsoft.com/library/ja/cpgenref/html/cpconregularexpressionslanguageelements.asp
0908デフォルトの名無しさん
2006/08/24(木) 19:14:16255\.255\.1([6-8]\d|9[01])\.\d+
で十分実用的な気がする
0909デフォルトの名無しさん
2006/08/24(木) 19:33:280910デフォルトの名無しさん
2006/08/24(木) 19:39:37REでないけど
0911デフォルトの名無しさん
2006/08/24(木) 23:00:10/(([水金火木土]|[天海]王)星|地球)/
0912デフォルトの名無しさん
2006/08/24(木) 23:04:370913デフォルトの名無しさん
2006/08/24(木) 23:06:460914デフォルトの名無しさん
2006/08/25(金) 05:47:540915デフォルトの名無しさん
2006/08/25(金) 07:47:04入れる価値無し
0916デフォルトの名無しさん
2006/08/25(金) 08:32:31「それはいやだから冥王星は惑星未満ってことで」
0917デフォルトの名無しさん
2006/08/25(金) 09:15:330918デフォルトの名無しさん
2006/08/25(金) 10:17:180919デフォルトの名無しさん
2006/08/25(金) 12:12:280920デフォルトの名無しさん
2006/08/25(金) 14:38:250921デフォルトの名無しさん
2006/08/25(金) 16:23:39だと何かリズムが悪いよなぁ。
0922デフォルトの名無しさん
2006/08/25(金) 18:33:510923デフォルトの名無しさん
2006/08/25(金) 19:42:170924デフォルトの名無しさん
2006/08/25(金) 19:46:280925デフォルトの名無しさん
2006/08/25(金) 19:53:13まだ冥王星は発見されてなかっただけ
0926デフォルトの名無しさん
2006/08/25(金) 19:54:360927デフォルトの名無しさん
2006/08/26(土) 18:11:260928デフォルトの名無しさん
2006/08/26(土) 18:26:570929デフォルトの名無しさん
2006/08/26(土) 18:36:43僕は友達からそういうのがあるって聞いただけなんだけど
とてもむずかしい話らしいよ
0930デフォルトの名無しさん
2006/08/28(月) 07:13:120931デフォルトの名無しさん
2006/08/28(月) 07:33:26小説 正規表現 第2版 (単行本)
これだな
0932デフォルトの名無しさん
2006/08/28(月) 08:42:240933デフォルトの名無しさん
2006/08/28(月) 09:31:030934デフォルトの名無しさん
2006/08/28(月) 14:07:10○ジェフリー
0935デフォルトの名無しさん
2006/08/29(火) 02:43:10Amazon.comのデータを見ると今月頭に出たみたい。
早速注文したが、到着予定が9/19。
それでも Amazon.co.jp経由で注文すると来月末になっちゃうから
ましっちゃまし。
0936デフォルトの名無しさん
2006/08/29(火) 14:43:470937デフォルトの名無しさん
2006/08/29(火) 21:38:52/[^(abc)]/
じゃあだめ?
0938デフォルトの名無しさん
2006/08/29(火) 23:02:170939935
2006/08/30(水) 02:46:24んーどうだろね。Perl 6のRules 自体が、ほぼfixされているとはいうものの
仕様が流動的だし。
とりあえず Amazonのページにある情報では分からんね。
regex.infoにもそれらしい情報はなし。
まあ届いたら報告しますわ。
0940デフォルトの名無しさん
2006/08/30(水) 02:47:43よく見る勘違いだけど、なんでそれでいけると思ったの?
0941デフォルトの名無しさん
2006/08/30(水) 02:51:06もうちょっとマシな表現にすれば良かったのに。
IPv6の::も面倒だ。
0942デフォルトの名無しさん
2006/08/30(水) 03:10:20IPv6 アドレスなんかは特に、正規表現で全部やろうって方が間違いでしょ。
0943デフォルトの名無しさん
2006/08/30(水) 11:05:21[^a] でaじゃない文字でしょ
(abc)でabcというグループでしょ
だから[^(abc)]でabcという文字(列)じゃない文字
と思った
0944デフォルトの名無しさん
2006/08/30(水) 16:32:28思ったとおりに物事がすすめば世の中平和さ
0945デフォルトの名無しさん
2006/08/30(水) 16:43:37/(?:(?!含ませたくない文字列).)*/
0946935
2006/08/31(木) 02:03:09まだぱらぱらとしか見てないんだけど、ぱっと見増えているのは
PHPのpreg*の説明があるところ?
Javaのバージョン間での拡張の差とかもあるみたい。
で、残念ながら Perl 6に関する記述はない模様。
2nd ed.は行方不明なんで具体的にどう変わったか調べろというのは勘弁ね。
0947デフォルトの名無しさん
2006/08/31(木) 08:40:01それだと abc を仲間はずれにしたいとき
abcdef だと空文字列がヒットして
defabc だとdefがヒットするからダメだよ。
0948デフォルトの名無しさん
2006/08/31(木) 15:54:36テストしたらどんな文字列にもマッチするよ
0949デフォルトの名無しさん
2006/08/31(木) 18:04:450950デフォルトの名無しさん
2006/08/31(木) 18:50:09ttp://www.geocities.jp/kosako3/oniguruma/doc/RE.ja.txt
0951デフォルトの名無しさん
2006/08/31(木) 19:00:31Amazon の説明を見た感じだと、
あとは Ruby, MySQL あたりが追加と Java がより詳しくなったのが変更点なのかな?
個人的には、 Ruby の既存の Regexp と鬼車との違いなんかが載ってると嬉しいな。
0952デフォルトの名無しさん
2006/08/31(木) 20:21:42実はバックリファレンスの有無で文法が変わる。
http://capslockabcjp.kitunebi.com/faq.html#regex
鬼車で安定版が出てからが真打。
0953デフォルトの名無しさん
2006/08/31(木) 21:12:33「バックリファレンスの有無で文法が変わる」と問題「ありすぎ」なの?
0954デフォルトの名無しさん
2006/08/31(木) 21:18:16(1+1)と1+1の結果が変わるようなら、言語として設計が変。
0955デフォルトの名無しさん
2006/08/31(木) 23:25:020956デフォルトの名無しさん
2006/08/31(木) 23:29:050957935
2006/09/01(金) 00:48:22えと、全部で章立てが十あって、JavaとかPHPは章がひとつ割かれているんだけど
RubyやMySQLはないっす。
索引を見てもRubyで引けるのは大して項目数がないし、
Onigurumaという項目もないから、ご希望のものは多分
載ってないんじゃないかなあ。
そもそもジェフリーが鬼車の存在を知っているのか疑問に思ったりw
0958デフォルトの名無しさん
2006/09/01(金) 11:14:18あらら、そうなんですか。残念・・・
0959デフォルトの名無しさん
2006/09/03(日) 18:59:01これ眺めてて思ったんだけど、正規表現ってどんだけ種類あるんだ?
POSIX
Emacs
grep
Java
Perl
Ruby
0960デフォルトの名無しさん
2006/09/03(日) 20:09:56挙げるだけ虚しくなるくらい無数にある。
0961デフォルトの名無しさん
2006/09/03(日) 20:13:50特に参照パラメータとかね
0962デフォルトの名無しさん
2006/09/04(月) 00:06:110963デフォルトの名無しさん
2006/09/07(木) 05:03:47メニイコアの時代になれば探索の順序に依存する仕様が
並列化のネックになる。
POSIX化すれと言いたい。
0964デフォルトの名無しさん
2006/09/08(金) 06:58:410965デフォルトの名無しさん
2006/09/08(金) 07:15:13どこが正規なの?
0966デフォルトの名無しさん
2006/09/08(金) 08:24:460967デフォルトの名無しさん
2006/09/09(土) 10:25:06俺は>>965じゃないが、基本的にはそういうことだよな
ただ、現在のPerlやRubyなどの「正規表現」は拡張されまくった結果、
既に正規文法では表現できないものも表現できるようになってるが…
0968デフォルトの名無しさん
2006/09/09(土) 18:28:431. href="..."
2. href='...'
3. href=...
4. href = ...
※4はイコール記号の前後に *いくつかの* スペース(タブも含む)があるとする
1〜2は「href=("|')」と表現することが出来ましたが、3〜4はどう表現したらよいか分かりません。
よろしくおねがいします。
0969デフォルトの名無しさん
2006/09/09(土) 18:30:39その前に、HTML的には 1. だけが正解
0970デフォルトの名無しさん
2006/09/09(土) 18:46:320971デフォルトの名無しさん
2006/09/09(土) 18:48:200972デフォルトの名無しさん
2006/09/09(土) 19:05:242.も正解。
>By default, SGML requires that all attribute values be delimited using either double quotation marks (ASCII decimal 34) or
>single quotation marks (ASCII decimal 39).
>Single quote marks can be included within the attribute value when the value is delimited by double quote marks, and vice versa.
>Authors may also use numeric character references to represent double quotes (") and single quotes (').
>For double quotes authors can also use the character entity reference ".
0973デフォルトの名無しさん
2006/09/09(土) 19:23:16=の途中にスペースが入るのはどうかと思う…。解釈してくれるブラウザはあるの?
0974デフォルトの名無しさん
2006/09/09(土) 20:05:35ダカラHTMLなんてパースしたくねぇ (;´д⊂)
0975デフォルトの名無しさん
2006/09/09(土) 20:14:120976975
2006/09/09(土) 20:15:410977デフォルトの名無しさん
2006/09/09(土) 21:33:12スマン 出展教えて
0978968
2006/09/09(土) 21:41:47>>969
言われる通り、二重引用符、または単引用符で括る約束ですね。
例外もありますが、XHTMLでは全て括る約束のようです。
つまり、仕様に基づいて(X)HTMLドキュメントを作成しない著者が多いので
こちとら正規表現に苦労しているわけです。(いや、冗談、これは私が悪い……)
>>977 仕様書じゃないかな?
0979デフォルトの名無しさん
2006/09/09(土) 22:05:35ttp://www.w3.org/TR/1998/REC-html40-19980424/intro/sgmltut.html
0980デフォルトの名無しさん
2006/09/10(日) 14:50:260981デフォルトの名無しさん
2006/09/11(月) 00:14:430982デフォルトの名無しさん
2006/09/11(月) 10:36:37もっと精進すれば、必ずできると信じているから。
0983デフォルトの名無しさん
2006/09/11(月) 11:42:420984デフォルトの名無しさん
2006/09/11(月) 15:40:43どのように感じているのか?
奥谷:「正規表現論は甘えです」
日経BP:真意を確かめようと質問を重ねると、奥谷は苛立った
ように言葉を畳みかけた。
奥谷:「競争はしんどい。だから甘えが出ている。個人の甘えが、
このままだと社会の甘えになる」
「今の一致はほとんどが ”ぜいたく一致” 比較したい文字列と
パターンが違うということを客観視できていない」
0985デフォルトの名無しさん
2006/09/11(月) 16:08:36もれがよく書く正規表現
つ m/href\s*=\s*(\'|\"|)(.*?)\1[\s>]/i
0986デフォルトの名無しさん
2006/09/12(火) 00:52:36君も今日からお仲間w
0987デフォルトの名無しさん
2006/09/12(火) 03:47:450988デフォルトの名無しさん
2006/09/12(火) 03:54:380989デフォルトの名無しさん
2006/09/12(火) 23:46:46http://pc8.2ch.net/test/read.cgi/tech/1156413899/
0990デフォルトの名無しさん
2006/09/13(水) 00:24:480991デフォルトの名無しさん
2006/09/13(水) 08:31:500992デフォルトの名無しさん
2006/09/13(水) 09:30:100993デフォルトの名無しさん
2006/09/13(水) 15:23:090994デフォルトの名無しさん
2006/09/13(水) 15:24:030995デフォルトの名無しさん
2006/09/13(水) 15:25:090996デフォルトの名無しさん
2006/09/13(水) 16:15:590997デフォルトの名無しさん
2006/09/13(水) 16:19:06正規表現でaからzまでの文字を順に出力するにはどうすればよいですか?
たとえばperlで
@atoz = /hogehoge/;
としたら
$atoz[0] = 'a';
$atoz[1] = 'b';
$atoz[2] = 'c';
みたいになって欲しいのですが。
0998デフォルトの名無しさん
2006/09/13(水) 16:23:28@atoz = /(.)/g;
0999デフォルトの名無しさん
2006/09/13(水) 16:24:36ここが反則です。
1000デフォルトの名無しさん
2006/09/13(水) 16:24:42どうしても正規表現でやるのか…。
@atoz = "a" .. "z";
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。