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


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

正規表現 part4



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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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


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

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

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



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

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


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

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

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

とかでいいのでは?

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

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

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

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

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

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


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

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

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

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

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

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



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

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

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

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

:v/regexp/d

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

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

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



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

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

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

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

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

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

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


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



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



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

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

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


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

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

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

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

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

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

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

Set ObjRegExp = New RegExp
ObjRegExp.Multiline = True

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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



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

<aaa bbb ccc>
ddddddddddddd<aaa>

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

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

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

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

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

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

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

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

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

どっちか知らないけど。

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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


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

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




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

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

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

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

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

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

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

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

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

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


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

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

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

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



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

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

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

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

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

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

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

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

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

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

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




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


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

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

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

_と-の扱いは?

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

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

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

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

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

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

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

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





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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

言語はPHPです。


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



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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

$ ls syslog.log*

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

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

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



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

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

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


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

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

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

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

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

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

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

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


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

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



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

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

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

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

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

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

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

rubyを勉強中です。

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

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






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

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

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