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


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

正規表現 Part5



1 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 22:07:28 ]
正規表現(Regular Expression)スレです。

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

前スレ
正規表現 Part4
pc11.2ch.net/test/read.cgi/tech/1186030400/

2 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 22:08:44 ]
◆関連サイト
正規表現メモ
www.kt.rim.or.jp/~kbk/regex/regex.html
Perl正規表現雑技
www.din.or.jp/~ohzaki/regex.htm
Regular Expression(Riue ちゃんの正規表現講座)
www.sixnine.net/regexp/
正規表現パズル
oraclesqlpuzzle.hp.infoseek.co.jp/regex/
詳説 正規表現
www.oreilly.co.jp/books/4873111307/
正規表現プログラミングFAQ
capslockabcjp.kitunebi.com/faq.html
JScript 正規表現の概説
msdn.microsoft.com/library/ja/script56/html/js56reconIntroductionToRegularExpressions.asp
.NET Framework 正規表現言語要素
msdn.microsoft.com/library/ja/cpgenref/html/cpconregularexpressionslanguageelements.asp

◆関連スレ
[UNIX板] 正規表現
pc8.2ch.net/test/read.cgi/unix/1039165754/
[WebProg] 正規表現道場
pc11.2ch.net/test/read.cgi/php/1168450843/

◆前スレ
[1] pc8.2ch.net/test/read.cgi/tech/1062152374/
[2] pc8.2ch.net/test/read.cgi/tech/1131028296/
[3] pc11.2ch.net/test/read.cgi/tech/1156413899/
[4] pc11.2ch.net/test/read.cgi/tech/1186030400/


3 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 04:23:54 ]
[|:;,  ]{2}[|!:;.,\]
[\∧∨ヮ]
([w]{5}|[w]{3})

これを一行にまとめるとどういう書き方ができるでしょうか?

4 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 04:28:50 ]
([|:;,  ]{2}[|!:;.,\∧∨ヮ]|[w]{5}|[w]{3})

5 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 18:10:12 ]
スルーされにくい質問のテンプレと例

●正規表現の使用環境
Java1.5

●検索か置換か?
検索

●説明
各行の1番目のAまでを検索したい

●対象データ
ABCA
BCAA
CABA

●希望する結果
ABCA
^
BCAA
^^^
CABA
^^


6 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 01:44:43 ]
根性の悪い捻くれた奴が減れば無問題

7 名前:デフォルトの名無しさん [2008/06/05(木) 20:10:15 ]
このスレの過去ログ集はないんですか?

8 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 20:14:17 ]
>>7
>>2
> ◆前スレ

9 名前:7 mailto:sage [2008/06/06(金) 00:18:32 ]
>>8
ありがとうございます。全部DAT落ちしています。
どこかにHTML化されたものがUPされていませんか?

10 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 00:19:51 ]
>>9
2ch.tora3.net/



11 名前:デフォルトの名無しさん [2008/06/07(土) 01:24:25 ]
ダブルコーテーションで囲まれた部分を検索したいのですが、
囲まれた部分が複数あると全部をまとめて見つけてしまいます。
最初のひとつだけを対象にするにはどう書けば良いでしょうか?

data="あいうえお" name="かきくけこ"

このような文字列の中から
あいうえお
だけを検索したいです。

現在は
reg = New Regex("data=""(?<DATA>.+)""", RegexOptions.Compiled)
というようにしてあります。
これだと、
str = reg.Match(pagedata).Result("${DATA}")
での取得結果が
あいうえお" name="かきくけこ"
になってしまいます。
VB.NETなのですが、宜しくお願いします。


12 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 02:07:35 ]
>>11
reg = New Regex("data=""(?<DATA>.+?)""", RegexOptions.Compiled)

13 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 03:05:29 ]
>>12
すごい!出来ました
ありがとう
色々調べたのに全然違ってた^ー^;)

14 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 04:07:24 ]
"""と3つ続けて書くときもあるんだなぁ
あぼーん対象になってた

15 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 03:01:13 ]
"foo\"bar"@baz.com

ローカルパートの前後の"だけを除去したいのですがどう書けば良いのでしょうか
preg_replace('/[^\\\]"/', '', $str);
では最初の"が除去されませんでした



16 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 09:13:54 ]
/^"|"@/ でいいのでは。
メールアドレスに「\で"をエスケープ」なんて仕様あったっけ?


17 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 09:29:16 ]
おとなしく@で分割して前後削っときなさい

18 名前:15 mailto:sage [2008/06/12(木) 14:16:47 ]
>16
ローカルパートでスペースや","といった文字を使う場合はダブルクォートで括る必要があるみたいです。
受信したメールで希にそういうものがありました。

>17
おとなしくそんな対応にしましたどうもです

19 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 16:36:41 ]
>>18
「""で括る」というのはその通りなんだけど、その括られた中で \" と
いう記述のルールはあるの、ということ。


20 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 17:52:10 ]
>19
www003.upp.so-net.ne.jp/hat/imail/sec08.html

>もっと面倒なのは、ユーザ名に「"」や「\」が入っている場合です。
>このときは「""」で括っただけではダメだという決まりがあるので、直前に「\」を付けます。
>次は、ユーザ名が「urashima"taro」の場合と、「urashima\taro」の場合です。

To: "urashima\"taro"@example.com
To: "urashima\\taro"@example.com

だそうです。



21 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 18:23:57 ]
"\""は許されるが、"\\"は許されない

22 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 18:25:55 ]
>>21
また大嘘を…

23 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 19:41:30 ]
>>20
ほんとだ、確認してみたらちゃんとそういうルールがあったね。騒がせてごめん。


24 名前:デフォルトの名無しさん [2008/06/16(月) 20:51:15 ]
すみません。
sakuraエディタをインストールして
<A href="www.xxx.com/" target="_blank">ABC</A>

<A href="www.xxx.com/" target="_blank"
title="www.xxx.com/">ABC</A>
に置き換える方法を探してるんですけど、別所で
・検索文字列に「<(a|A) ([^>]*)href="([^"]+)"」、置換文字列に「<$1 $2href="$3" title="$3"」と入れる
・置換する。
といわれたのを参考に色々試したんですが、全くの無知なもので、ぜんぜん置き換えできないので、
よければ詳しく教えてください。
テキスト内全部置き換えじゃなくて、通常の置き換えみたいに下方向とか指定できれば助かるんですが、
無理ならHTMLから部分的に切り取ってやってみます。

25 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 21:04:20 ]
正規表現はそれで機能する。実際にsakuraエディタで試した
あとはsakuraエディタの問題だからこれ以上はスレ違い

26 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 21:14:28 ]
href="([^"]+)"
href="$1" title="$1"

めんどくさいし、これでいいよ

27 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 21:27:19 ]
すみません。チェックいれたらできました・・・・
失礼しました。

28 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 21:32:09 ]
ついでに聞きたいんですけど、、

URLにある文字列
たとえば www.abcd などのドメイン名が含まれる場合のみ置き換えて、他のドメインは一切触らないってコマンドも可能ですか?
www.abcd.aa www.abcd.ab とwww.abcdが含まれる物は当然全部置き換えるようにしたいんですけど……

29 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 17:36:50 ]
href="www\.abcd.*?"

30 名前:28 mailto:sage [2008/06/19(木) 07:51:48 ]
>29 ありがとうございます。
でもやってみたけど出来ませんでした。()と[]で囲んでみましたが、駄目でした。

>24も私なんですけど、
色々調べてみたんですが、([^"]+)の( )内は$で指定できるってのは分かったんですが、
[^"]+でどうしてurlが指定できてるのか全く理解できません。

とりあえず、以下の置き換え方法が分かれば、知りたいこと全部解決するのですが、

<A href="www.xxx.com/a/a.html" target="_blank">AA</A>
<A href="www.123.com/a/a.html" target="_blank">123</A>
<A href="www.xxx.com/a/b.html" target="_blank">AB</A>
<A href="www.123.com/a/bhtml" target="_blank">123</A>
<A href="www.xxx.com/b/c.html" target="_blank">BC</A>
上記URLが並んでいたとして、以下のように置き換え。
<A href="www.xxx.com/a/a.html" target="_blank" title="AA www.xxx.com/a/a.html">AA</A>
<A href="www.123.com/a/a.html" target="_blank">123</A>
<A href="www.xxx.com/a/b.html" target="_blank" title="AB www.xxx.com/a/b.html">AB</A>
<A href="www.123.com/a/b.html" target="_blank" title="123_b.html">123</A>
<A href="www.xxx.com/b/c.html" target="_blank" title="BC (www.xxx.com/a/b.html)">BC</A>
4と5行目は可能ならって感じですが、これ全部分かれば今後の応用もアレンジできそうなので。
>24が解決すれば全部自分で出来そうだと思ってましたが、甘かったです。

図々しいですが、分かる方いましたら教えてください。




31 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 09:27:36 ]
ここまでくると、エディタの置換一発って訳にはいかないだろう。
perlとかrubyとか、正規表現とテキストの扱いに長けたスクリプト言語を使うとか、
エディタの置換でも、一発で全て解決しようとせずに
多段階で置換するとか、目的の物を他と区別出来る一旦違う形に変換するとか、
そういう工夫が要る。
個人的には、数が多くて今後もまたやる作業なら、何らかの言語を使う。

32 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 09:43:42 ]
出来ないことはないだろうけど、タグが厄介なんだよな。
正規表現マッチングする前にHTMLパーサーとか使って処理したい。


33 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 09:56:48 ]
パズル的な楽しさを追求するならいいけど、
実用だったら早々に見切りを付けるのも肝心だよね。
複雑な正規表現は、後で手直しするのも面倒だし。

34 名前:30 mailto:sage [2008/06/19(木) 11:32:57 ]
ありがとう御座います。
では、これだけでも無理でしょうか?
<A href="www.xxx.com/a/a.html" target="_blank">AA</A>
<A href="www.123.com/a/a.html" target="_blank">123</A>
<A href="www.xxx.com/a/b.html" target="_blank">AB</A>

上記URLが並んでいたとして、以下のように置き換え。
<A href="www.xxx.com/a/a.html" target="_blank" title="www.xxx.com/a/a.html">AA</A>
<A href="www.123.com/a/a.html" target="_blank">123</A>
<A href="www.xxx.com/a/b.html" target="_blank" title="www.xxx.com/a/b.html">AB</A>

29さんのでは理解できなかったので、要するに、1行目と3行目は24の方法で出来てるので、
24の方法に「この部分がマッチした場合のみ置き換え」って感じで加工したいのですが、
([^"]+)の( )内を弄ればいいんでしょうけどやってみましたが、検索できなくなってしまいます。

35 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 12:09:29 ]
>>34
暇なので書いてみた。Pythonだけど、出来合いのHTMLパーサは使ってない。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6967.txt

>>30のようなことをやりたければ、ツリーパーサがないと面倒だな。

36 名前:34 mailto:sage [2008/06/19(木) 12:35:03 ]

こんなに複雑なこと頼んでたんですか……
置き換えで出来ると思ったけど甘かったんですね。
使い方調べてやってみます。
ありがとう御座いました。

37 名前:34 mailto:sage [2008/06/19(木) 12:58:55 ]
すみません。
何かソフト必要なんでしょうか?Windows使用です。
最後の("www.xxx.com")を書き換えることぐらいしか検討つきません。
abc.txtの内容を置き換えるとして、どのようにしてやればいいのか教えてほしいです。
いまここをみてるんですが、分かりかけてるようで分からない。
ttp://d.hatena.ne.jp/cloudnet/20080609/pythonfile

Blenderで3Dメッシュ加工したことはありますが、関係ないですよね・・



38 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 13:37:21 ]
えーと
pythonのスクリプトだから、pythonがインストールされていなければダメだよ

foo.pyという名前で保存したとすると
python foo.py <hoge.html
のようにして標準入力から食わせてやるとよい

39 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 13:54:59 ]
perl だとこんな具合

$htm = <<_EOF;
<A href="www.xxx.com/a/a.html" target="_blank">AA</A>
<A href="www.123.com/a/a.html" target="_blank">123</A>
<A href="www.xxx.com/a/b.html" target="_blank">AB</A>
<A href="www.123.com/a/bhtml" target="_blank">123</A>
<A href="www.xxx.com/b/c.html" target="_blank">BC</A>
_EOF

$htm =~ s/<(a href=)"(http:\/\/www.xxx.com\/[^"]+)"([^>]*)>(.*?)(<\/a>)/<$1$2$3 title="$4 $2">$4$5/ig;
print '-'x78,"\n";
print $htm;
print '-'x78,"\n";

実行結果
------------------------------------------------------------------------------
<A href=www.xxx.com/a/a.html target="_blank" title="AA www.xxx.com/a/a.html">AA</A>
<A href="www.123.com/a/a.html" target="_blank">123</A>
<A href=www.xxx.com/a/b.html target="_blank" title="AB www.xxx.com/a/b.html">AB</A>
<A href="www.123.com/a/bhtml" target="_blank">123</A>
<A href=www.xxx.com/b/c.html target="_blank" title="BC www.xxx.com/b/c.html">BC</A>
------------------------------------------------------------------------------

40 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 14:04:24 ]
anchor以外の任意のインライン要素が
anchorの子要素になり得るので注意



41 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 14:30:04 ]
えっと
anchorとか
foo.pyとか全く理解できないんですが、
いまここから
www.activestate.com/
ActivePerl 5.10.0.1003 for Windows (x86)をダウンロードしてインストールしてみました。


42 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 14:36:55 ]
なぜPerlを…Pythonってwindows用のバイナリないの?

43 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 14:39:39 ]
ActivePythonというのがあるし
自分でコンパイルもできるよ

44 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 14:39:56 ]
同じとこにあるよ。ActivePython

45 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 14:43:45 ]
あのー全く無知なもんで、scriptと言えばwebのjavascriptと cgiscriptしか分からないのですが、
やりたいのは、sakuraエディタで今開いてるabc.txtの置き換えです。
35サンと39さんが同じ人かは分かりませんが、39さんの手法が分かりやすそうなんで、
別の人だったら35さんには悪いですが、pealって書いてあるから
必要だと思ってインストールしてみたんですが、動かし方がよく分かりません。;;

46 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 14:45:23 ]
あ、あったんで、今ActivePython落としてます。

47 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 14:52:11 ]
wxPython2.8-win32-unicode-2.8.7.1-py25.exe
を落としてインストールしました。
前にBlender弄ったときに入れた気もしますが。

48 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 15:00:31 ]
Python Shellを起動してabc.txtを開いてみたんですが、これにどうにかしてupしてもらったtxtの内容を使えばいいのかな?

49 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 16:13:44 ]
ここは君の作業ログじゃないから、
試行錯誤して困ったらまたおいで。

50 名前:48 mailto:sage [2008/06/19(木) 18:41:53 ]
最終的に
python234jp-20040927
をインストールして、helpファイルずっと見てるんですが、さっぱり理解できません;;
pythonについては別板で聞いたほうがいいんですかね?



51 名前:39 mailto:sage [2008/06/19(木) 19:14:10 ]
# unko.pl
# ActivePerl で動作確認済
# つかいかた...コマンドプロンプトで C> unko.pl abc.txt
open FILE, '<', $ARGV[0];
read FILE, $htm, -s FILE;
close FILE;

$htm =~ s/<(a href=)"(http:\/\/www.xxx.com\/[^"]+)"([^>]*)>(.*?)(<\/a>)/<$1$2$3 title="$4 $2">$4$5/ig;
print $htm;

52 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 20:30:01 ]
やっぱり別の人だったんですね。
とりあえず、>51の4行目以下をテキストにコピーして、unko.plで保存。
cmd.exeと同じディレクトリにabc.txtとunko.plをおいて試しましたが、駄目でした。
処理が始まって、終わったあとabc.txt見ても内容変化してないです。
原因は、www.xxx.com/abc.def?ghi=xyz.とかになってるとして、?とか=の文字が原因になってるとかありませんか?
それか、_blank">ここが日本語になってる</a>のが原因とか・・・
pythonのほうも弄ってますが、まだわかりません。

53 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 22:13:56 ]
JScript 5.6(WSH)で行先頭の数式を検索したいのですが、
単体の数字や何故か英単語まで反応してしまって困っています。
要するに数値といずれかの演算子を含むパターンが組めればよいのですが、正規表現に馴れておらずうまくいきません。
問題なく検索可能なパターンを教えていただけないでしょうか?

「50+2*2 付随テキスト」にはマッチする。
「50 付随テキスト」にはマッチしない。

現在問題の出ているパターン
 new RegExp("^([\d\+\-d\*\/\(\)r@]+)[ | ]*(.*)", "i") //d, r, z ,@は演算子としてそれ以降の処理で使用しています

54 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 23:35:08 ]
>>53
とりあえずヒントとしては、
●JavaScriptの文字列定数内では \ がエスケープ文字
●[演算子じゃない文字]([演算子][演算子じゃない文字])+


55 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 23:36:33 ]
●[演算子じゃない文字]+([演算子][演算子じゃない文字]+)+
に訂正。
厳密じゃないけどね。


56 名前:53 mailto:sage [2008/06/20(金) 00:23:42 ]
>>54
うまくいきました。ありがとうございます。

57 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 00:51:11 ]
>>52
おまえなぁ、要求をコロコロ変えるなよ。
あとからあとからチビチビ仕様を変更せずに、最初にキッチリ書いとけよ。

58 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 01:01:11 ]
>>52
わかったかった。「置き換える」の意味が、やっとわかったよ。
ここは正規表現スレなんで、置換の事だと勘違いしてた。
unko.pl は画面に表示するだけだ。
置き換えしたければ abc.txt を open して print 文で $htm を書き出せ。

59 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 06:58:38 ]
入力が決まらないのに正規表現を書くなんて徒労もいいとこだお

60 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 07:40:45 ]
51で問題ありませんでした。
私のやり方が間違ってたようです。
お二人には感謝してます。
プログラムの面白さが分かったような気がするので、これを機に少しずつ勉強初めてみます。
最初はやっぱりcgiとかがいいんでしょうか?
web関係で役立つスキルが欲しいのですが・・・・



61 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 10:21:09 ]
>>60
お手軽さならJavaScriptかな。
ローカルでも実行可能だし、正規表現も扱えるし、ページを動的加工して遊べるし。

62 名前:デフォルトの七資産 mailto:sage [2008/06/20(金) 16:04:20 ]
都道府県名からの住所を一行で入力する

**県※※郡○○市●●-●●

この文字列を
都道府県名、郡名、市区町村名、その他に分けるときの正規表現はどうしたらいいのでしょう?

※「村山市」や「四日市市」など市区町村名に「市区町村」の四文字が入ったものは考えないものとします。
言語はPHPです。

63 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 18:11:47 ]
>>62
自分でどこまで書いてみた?


64 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 19:23:36 ]
PHPの文法は知らないけど、単純に考えると
/([^県]+県)([^郡]+郡)([^市]+市)(.*)/で、$1〜$4かなぁ。
郡って必ず付くのかな。

65 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 20:41:43 ]
/([^県]+県|[^道]+道|[^府]+府)([^郡]+郡|[^市]+市)(.*)/ の方が良くないかな。

66 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 23:59:54 ]
明治以降、郡に属している市はない

67 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 22:05:00 ]
書き込ませて頂きます。

Adobe Goliveの置換機能で、正規表現の奥深さを
知りました。

<!-- start -->
<div class="menu">
<ul>
<li></li>
<li></li>
<li></li>
</ul>
</div>
<!-- end -->

これの<!-- start -->から<!-- end -->までを選択したいとき、

<!-- start -->\n.*\n.*\n.*\n.*\n.*\n.*\n.*\n.*<!-- end -->とすると
選択はできました。
しかし\nや.*がたくさん出てきてしまい、困っています。

もう少し簡素化できないでしょうか?
ご教授お願いします。<(__)>


68 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 22:27:03 ]
Goliveさんの仕様は知らんけど、.が改行を含まない仕様なのかな?
<!-- start -->(\n|.)*<!-- end -->
こんな感じ?


69 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 02:17:47 ]
>>67
mオプションとか
マルチラインモードとか
そういう機能はない?

70 名前:67 mailto:sage [2008/06/24(火) 06:16:41 ]
>>68さん
まさしくそれです!検証したところバッチリ動作しました。
これで管理が楽になると思います。
ありがとうございます(^^)

>>69さん
mオプション、マルチラインモード等の語句でググってきました。
残念ながら今の自分の頭では理解しきれず、その機能があるかどうか不明
です...(ノД`)・゜・。ゴメンナサイ,モット勉強シテキマス




また行き詰まったとき、来させて頂きます。
教えて頂いた方々、本当にありがとうございました。




71 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 16:48:01 ]
正規表現ほとんど触ったことなかったんですが、
1文字以上で特定の文字(チェックしたいのは [ と ] )を含まないってどう書くんでしょうか?



72 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 17:43:46 ]
>>71
>>2 に書いてあるよ。それ読んでもわからなかったら、また質問しにおいで。

73 名前:71 mailto:sage [2008/06/27(金) 15:05:09 ]
なかなか難しい。
C#で試しに'A'がある文字列をはじくように書いてみましたがうまく
動きませんでした。 

string pat = @"^(?!A)*$";
bool result;
result = Regex.IsMatch( "あいうえお", pat );
result = Regex.IsMatch( "あいうAえお", pat );

pat を @"^[^A]*$"
にしてみたらうまく動いたけど、なんで最初の条件で動かないんでしょうか・・。


74 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 15:29:12 ]
> string pat = @"^(?!A)*$";

.netの正規表現には詳しくないんだけど、一般的な解釈で考えるとこれ
はパターンの文法エラーになってもおかしくないよ。ふつうは先読みや
後読みに繰り返し(+ * {n,m})は付けられない。先読みや後読みは文字を
消費しないので、繰り返しても意味がない。



75 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 17:08:29 ]
なるほど。使えない組合せもあるのか〜。
ありがとう。

76 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 19:41:44 ]
これとほぼ同じ性能のやつを作りたいのですが、どんな言語と知識が必要ですか?
当方はhtmlまでしか理解できてません。
スタイルシートの理解度は10%程度です。
たまに、メモ帳の置き換えで正規表現を使うぐらいです。
ttp://www.ahref.org/cgi/urlchu/
多少アレンジするつもりですが、最低限必要なことが知りたいです。

77 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 20:06:25 ]
* HTML。特にフォーム
* CGIの基礎。フォームから受け取った入力にどうやってアクセスするか
* スクリプト言語。Perl, PHP, Python, Rubyのうち好きなのをどれか

あとはHTMLからリンクを抽出する方法でぐぐれば
各スクリプト言語用のサンプルがいくらでも出てくるからそれを使えばOK
これ以降は正規表現云々よりCGIの話だからそっちいって聞いておいで

78 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 23:09:48 ]
Javascriptだけで十分じゃ?

79 名前:77 mailto:sage [2008/06/29(日) 23:16:42 ]
あ、その通りだ。ごめんね

80 名前:デフォルトの名無しさん [2008/07/01(火) 00:04:06 ]
「アルファベット {a,b,c} 上で a の数が偶数の文字列を表す正規表現」を書
きたいんですが、状態が 8 つ、受理状態が 4 つの状態遷移図は書けるものの、
これをどうやって正規表現に落とせばいいかわかりません。。。

状態遷移図を正規表現にするときのコツみたいのってありますか?






81 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 00:47:10 ]
/([^a]*a[^a]*a[^a]*)*/

82 名前:デフォルトの名無しさん [2008/07/01(火) 05:16:53 ]
>80
oraclesqlpuzzle.hp.infoseek.co.jp/regex/regex-4-10.html

83 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 16:34:43 ]
10-20など、正数-正数という入力をし
ある文字列に10〜20などが入っていた場合にはその文字列を表示しようとしているのですが

自分ではスマートなやり方が思いつかなかったので
まず数字-数字に対して([0-9]{1,2})-([0-9]{1,2})とヒットさせ
前括弧をprematch
後括弧をaftmatchとして
for(int i=prematch; i<=aftmatch;i++)
と回して
10|11|12|...|20
と力技で置換し

それを文字列に対して正規表現でマッチさせています

何か良いスマートな方法はありませんか。

84 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 16:41:04 ]
なんでなんでも正規表現を使いたがるの?
/\d+/抜き出して[10,20]かどうか判断すればいいじゃん。

85 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 17:09:46 ]
>>84
なるほど
検索文字列をどうにかするのではなく
被検索文字列から数字のみを抜き出せばいいんですね

その方法を少し変え別の部分にも適応すると
その部分も解決しそうです

ありがとうございました

#[xx,yy]という表現を知らなかったから勉強し直そう…

86 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 17:14:49 ]
>>83
中身に関係ないけど、
pre <-> post
before <-> after
じゃないのか。

87 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 18:01:54 ]
>>86
postなんて表現があったんですね
直しました、有難うございます

88 名前:デフォルトの名無しさん [2008/07/08(火) 22:40:23 ]
//A //BBBB //C //DD
//E //FF //G
//H //I
//J
上のデータで以下の塊で取り出したいのですが
//A //BBBB //C //DD
//E //FF //G
//H //I
//J
どのような表現をとればよいでしょうか
環境はjavaです


89 名前:88 mailto:sage [2008/07/08(火) 22:45:31 ]
>>88です
自己解決しました。

90 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 14:15:00 ]
前まで動いていたコードが正しい動作をしなくなったので
相談させて下さい。

\d{2}.\d{2}.\d{2}
で、年.月.日の一番新しいファイルを取ってきていたのですが
何故か2月分のファイルを取ってくる様になりました。

1月〜今月までのファイルは有るのですが、コードを打ち込みなおしても
直りませんでした。

対処法などが有ればご教授ください。





91 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 14:22:55 ]
>>90
抽出元のフォーマットはどんな感じになってるんだ

92 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 08:23:29 ]
>>91 レス有難う御座います。

hoge08.01.01.xls 〜 hoge08.07.13.xlsと言う感じなのですが
何か心当たりは有りますでしょうか?

93 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 08:37:28 ]
その二月分のファイル名と \d{2}.\d{2}.\d{2} はマッチするかとか試してみた?

とりあえず . はドットそのものじゃなくて任意の一文字を表す
ドットそのものは \. ね

94 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 10:26:29 ]
こんな感じで正規表現の事例集とかもっといっぱいない?
homepage.mac.com/overspeeds/Windows/WindowsMACAdd.htm

95 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 11:50:24 ]
>>93 早いレス助かります。

hoge08.02.14.xls辺りを優先でマッチしてしまう様だったので
\d{2}.07.\d{2}に変更すると、今月内の最新のを優先で当たります。

>\.についても気になったので、直したのですが動作的には
変りませんでした。


96 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 12:47:05 ]
それは正規表現の問題じゃないと思うよ

97 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 14:58:19 ]
>>96

何か正規表現で一番最優先でマッチしてくるものとかが有るのかな?
と思ってみたのですが、以前は正常に稼動していたので
サーバで異常な動作なのかな・・・。

大変有難う御座いました。

98 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 17:05:51 ]
>>97
技術屋なら
擬似的にでも似たような環境を作ってテストしてみるのがいい

99 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 17:37:58 ]
>>97
正規表現がやるのは「マッチ擦る/しない」だけで、
優先順位とかは検索処理側かと。

100 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 22:37:09 ]
\d{2}.\d{2}.\d{2} を誰かがいじったか何かで
\d{2}.\d2.\d{2} こうなってしまってるとか???




101 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 12:21:51 ]
単に、ディレクトリ内でのファイル配置が変わっただけじゃないのか?
例えば、今までは単純増加だったところに何らかの理由で2月のデータを更新して配置が変わってしまったとか。
いずれにしても、検索処理側の問題だな。






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

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

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