1 名前:デフォルトの名無しさん 転載ダメ©2ch.net mailto:sageteoff [2014/11/05(水) 10:12:55.39 ID:CXVoT6Mj] Regular Expressionスレです。 質問する場合は必ず実装言語や処理系ソフトウェア名を示してください。 前スレ Regular Expression(正規表現) Part12 peace.2ch.net/test/read.cgi/tech/1387257592/ 天ぷら等2以降
2 名前:デフォルトの名無しさん [2014/11/05(水) 10:16:26.48 ID:wAx7C+BC] スルーされにくい質問のテンプレと例 ●Regular Expressionの使用環境 Java1.5 ●検索か置換か? 検索 ●説明 各行の1番目のAまでを検索したい ●対象データ ABCA BCAA CABA ●希望する結果 ABCA ^ BCAA ^^^ CABA ^^ ※ ^ はアンダーラインだそうな ^^;
3 名前:デフォルトの名無しさん mailto:sage [2014/11/05(水) 10:20:13.02 ID:wAx7C+BC] ◆関連サイト 正規表現メモ www.kt.rim.or.jp/~kbk/regex/regex.html Perl正規表現雑技 www.din.or.jp/~ohzaki/regex.htm Regular Expression(Riue ちゃんの正規表現講座) www.sixnine.net/regexp/ 正規表現パズル www.geocities.jp/oraclesqlpuzzle/regex/ 詳説 正規表現 www.oreilly.co.jp/books/9784873113593/ 正規表現プログラミングFAQ capslockabcjp.kitunebi.com/faq.html JScript 正規表現の概説 msdn.microsoft.com/ja-jp/library/28hw3sce%28v=VS.80%29.aspx .NET Framework 正規表現言語要素 msdn.microsoft.com/ja-jp/library/az24scfc%28v=vs.80%29.aspx 【 初心者 】 正規表現 【 入門 】 ←閉鎖 funcchan.blog16.fc2.com/ クックブック ←追加 鬼車、鬼雲 ←追加
4 名前:デフォルトの名無しさん mailto:sage [2014/11/05(水) 10:23:37.14 ID:wAx7C+BC] ◆関連スレ [UNIX板] 正規表現 pc12.2ch.net/test/read.cgi/unix/1039165754/ [WebProg] 正規表現道場 Part2 ←板移転 kanae.2ch.net/test/read.cgi/php/1348048723/ ◆前スレ [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/ [5] pc12.2ch.net/test/read.cgi/tech/1212498448/ [6] pc12.2ch.net/test/read.cgi/tech/1241537764/ [7] hibari.2ch.net/test/read.cgi/tech/1268979408/ [8] hibari.2ch.net/test/read.cgi/tech/1301067486/ [9] toro.2ch.net/test/read.cgi/tech/1323566370/ [10] toro.2ch.net/test/read.cgi/tech/1340383120/ [11] toro.2ch.net/test/read.cgi/tech/1362913813/ [12] peace.2ch.net/test/read.cgi/tech/1387257592/ [13] peace.2ch.net/test/read.cgi/tech/1415149975/
5 名前:デフォルトの名無しさん mailto:sage [2014/11/05(水) 10:30:49.67 ID:J7onoSgD] ノ ゚.ノヽ , /} ... ,,イ`" 、-' `;_' ' ..::::::::::::::... ,-、 _.._ ( (,(~ヽ'~ ..::::::::::::::::::::::: )'~ レー' 〉 ヽ i`'} .::::::::::::::::::::::: ~つ '-ー、 i | i' ...::::::::::::::::::::::: / < / 。/ ! ......::::::::::::::::::::::::: これは>>1 乙じゃなくて / ~^´ /},-'' ,●:::::::::::::::::::::::::::::::::::: i、 ,i' _,,...,-‐-、/ i :::::::: .::::::::::::: ..ゝ <,,-==、 ,,-,/ .::::::::::: 放射能がうんたら ) {~''~>`v-''`ー゙`'~ ..::::::::: ........::. { レ_ノ ..::::::::. ......::::::::: ノ '' ..::::::: ...::.:...::::::::: .::::::::: ...:......:::::::::::: . .:::::::::::. ..... .. ..:::::::::::::::::::::::: :::. ::::::::::::::::.::::::....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.. :: ::.. .:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::: ::. ::::::::::::::::: :::::::::::::::::::::::::::::: ::::: .:: ::. :::
6 名前:デフォルトの名無しさん mailto:sage [2014/11/05(水) 11:13:40.86 ID:bAAQDAhE] 鬼車 www.geocities.jp/kosako3/oniguruma/index_ja.html 鬼雲 https://github.com/k-takata/Onigmo Boost.Regex(日本語訳) alpha.sourceforge.jp/devel/boost.regex_ja_1_45_0.pdf 秀丸: 複数行にまたがる検索について homepage2.nifty.com/jr-kun/hidemaru_qa/4_regulr.html#RETURNS サクラエディタ: 改行 d.hatena.ne.jp/myokoym/20101219/1292779058 ※ サクラエディタでは複数行に渡る検索・置換は出来ません。 正規表現クックブック www.oreilly.co.jp/books/9784873114507/ せいきなんとか akiba.geocities.jp/hp20140401/
7 名前:デフォルトの名無しさん [2014/11/05(水) 11:16:30.19 ID:6PdTuYg9] >>6 乙GJ
8 名前:デフォルトの名無しさん mailto:sage [2014/11/05(水) 11:32:33.63 ID:bAAQDAhE] [ ある "文字列" を含まない正規表現 ] ▽ 先読みが使える環境 ((?!xyz).)* または (?:(?!xyz).)* 後者はカッコによるキャプチャを無効化しています。 1文字以上の繰り返しにしたい場合は * を + に書き換えて下さい。 ▽ 先読みが使えない環境 オートマトンの知識が不可欠なため初心者にはまず無理です。 解説サイトですらほとんどがデタラメな作成方法を載せています。 ↓正しい作り方はこちら。 xy を含まないものにマッチする正規表現 - Perl正規表現雑技 www.din.or.jp/~ohzaki/regex.htm#WithoutXY xyz を含まないものにマッチする正規表現 - Perl正規表現雑技 www.din.or.jp/~ohzaki/regex.htm#WithoutXYZ ↓いろいろな文字列否定 タグの中に "ある文字列" を含まない正規表現 akiba.geocities.jp/hp20140401/2014/002.html
9 名前:デフォルトの名無しさん mailto:sage [2014/11/05(水) 19:48:22.81 ID:bAAQDAhE] >>6 間違えた。 × ※ サクラエディタでは複数行に渡る検索・置換は出来ません。 ○ ※ サクラエディタでは複数行に渡る検索は出来ません。 置換欄に \r\n を入れれば行を増やすことは出来るようだ。
10 名前:デフォルトの名無しさん mailto:sage [2014/11/06(木) 09:13:27.45 ID:R+FFieFi] ●Regular Expressionの使用環境 MKEditor or 秀丸Editor ●検索か置換か? 置換 ●説明 HTMLファイル(XHTML1.0 Traditional)中の下記条件にあうコメントを画像リンクに変換したい 以下、24、とある部分は最大三桁までの正の整数(1〜350までの数字)で不連続、半角と読み替えてください。 なお数字が3桁に満たない場合はURL部分の場合は0で埋める必要があります。 ex)24->024 alt=""のところはalt="1-24"でもalt="1-024"でもalt="24"でも構いません。 お願いします ●対象データ <p><!-- 1-24 --></p> が、HTMLファイル中に多数点在 ●希望する結果 <p><a href="https://picasaweb.google.com/lh/photo/CywfGi9h5Rglb16GAkhh8GIVtM1tvezqxIpxXhd2SqU?feat=embedwebsite"> <img src="https://lh3.googleusercontent.com/-ykcoD1uynzU/VFg3lb6lAHI/AAAAAAAAJ4c/80boYt68n0w/s640/201410%25E9%259B%25B2%25E5%258F%2596%25E5%25B1%25B11_024.JPG" height="640" width="480" alt="1-24" /></a></p> *2chの一行あたりの文字数制限の関係で改行ありますが、本当は一切入りません
11 名前:デフォルトの名無しさん mailto:sage [2014/11/06(木) 10:28:08.46 ID:lWF4wSu7] >>10 補足 alt=""の置換は出来ればいいや程度で本命はURL文字列ないの置換です。 0埋めが無理な場合は1桁、2桁、3桁の場合で複数回に分けても構いません。
12 名前:デフォルトの名無しさん mailto:sage [2014/11/06(木) 13:27:21.94 ID:M7g3dHxa] …? <!-- 1-24 --> からURLをどうやって導出するんだ?
13 名前:デフォルトの名無しさん mailto:sage [2014/11/06(木) 13:52:01.65 ID:M7g3dHxa] URLの末尾のみが変動すると仮定するなら、安直なのは var base = '<p><a href="https://picasaweb.google.com/(略)"><img src="https://lh3.googleusercontent.com/(略)_[HAGE].JPG" height="640" width="480" alt="$1" /></a></p>'; console.info("<p><!-- 1-1 --></p>".replace(/<p><!-- (\w+-(\d{1})) --><\/p>/, base.replace('[HAGE]', '00$2'))); console.info("<p><!-- 1-22 --></p>".replace(/<p><!-- (\w+-(\d{2})) --><\/p>/, base.replace('[HAGE]', '0$2'))); console.info("<p><!-- 1-333 --></p>".replace(/<p><!-- (\w+-(\d{3})) --><\/p>/, base.replace('[HAGE]', '$2'))); 禿丸は持ってないのでJSなのは許せ
14 名前:デフォルトの名無しさん mailto:sage [2014/11/06(木) 16:21:39.82 ID:VPCdIppO] 前スレでこの手法で置換してた人がいたね。 1-24 ↓ 1-0000024 ↓ 1-\d*(\d{3})(?!\d) ↓ 1-$1
15 名前:デフォルトの名無しさん mailto:sage [2014/11/06(木) 21:18:29.51 ID:R1OkTjAz] >>10 MKEditorだと正規表現はかなり貧弱な模様なので、マクロかスクリプトでやるべきだよ 例として WSH(JScript)の場合(c:\test.js) MKEditorのメニュー - ツール - コマンドに、 コマンドライン: c:\test.js パラメータ: %FILENAME% として登録し実行 ただし、ファイルが外部で書き替わってもMKEditorは認識してくれないので 既存のファイルのみ可能でコマンド実行後、メニュー - ファイル -読み直すことが必要
16 名前:デフォルトの名無しさん mailto:sage [2014/11/06(木) 21:18:55.40 ID:R1OkTjAz] var base = '<p><a href="https://picasaweb.google.com/lh/photo/CywfGi9h5Rglb16GAkhh8GIVtM1tvezqxIpxXhd2SqU?feat=embedwebsite">' +'<img src="https://lh3.googleusercontent.com/-ykcoD1uynzU/VFg3lb6lAHI/AAAAAAAAJ4c/80boYt68n0w/s640/201410%25E9%259B%25B2%25E5%258F%2596%25E5%25B1%25B11_'; var opt1 = '\.JPG" height="640" width="480" ALT="'; var opt2 = '" /></a></p>'; var re=/<p><!--\s+(\d-(\d{1,3}))\s+--><\/p>/g; try {repComment(WScript.arguments);} catch(e){WScript.Echo(e.number+" :"+e.message);} function repComment(arg) { var n=0,rfile,wfile; var fs = new ActiveXObject("Scripting.FileSystemObject"); if(arg.length<1) throw new Error(10001,'パラメタ1にファイルパスを指定してください'); if(!fs.FileExists(arg(0))) throw new Error(10002,'指定ファイルがありません('+arg(0)+')'); rfile=fs.OpenTextFile(arg(0),1,true,0); data=rfile.ReadAll(); data=data.replace(re,function($0,$1,$2){n++;return(base+('00'+$2).slice(-3)+opt1+$1+opt2)}); rfile.Close(); wfile=fs.OpenTextFile(arg(0),2,true,0); wfile.Write(data); wfile.Close(); fs = null; WScript.Echo(n+'個の置換終了'); }
17 名前:デフォルトの名無しさん mailto:sage [2014/11/07(金) 00:10:01.81 ID:Ac/zCtPZ] 皆様ありがとうございます。 >>10 です。 PicasaのURLをその後しばらく眺めていたところ、末尾以外にも変動するところが複数あり、しかも規則性なし、みたいで凄まじく脱力しております。おのれ、Googleめ。 せっかく多数の解決案をお示し頂きましたのに、私の調査不足でこんなことになりすみませんでした。 が、他に、正規表現で対処出来そうな物があるので、頂いた案を参考に自力で出来るように頑張ります。 MKEditorが複雑な置換に向かないということもご指摘ありがとうございます。 まことに申し訳ありませんでした。
18 名前:デフォルトの名無しさん mailto:sage [2014/11/07(金) 02:31:20.76 ID:LKxMdqoj] >>9 WSH/JScriptのマクロなどで全文を取得→JScriptのRegExpとreplaceで処理→本文に反映、という手段は一応ある。 こういうのは何処らへんまでテンプレで説明するべきなんだろうなぁ… 質問(問題解決法の問い合わせ)に対する回答としては十分有効なんだが、テンプレ化すべきかと言われると悩む。
19 名前:デフォルトの名無しさん mailto:sage [2014/11/07(金) 11:43:10.76 ID:tBFEa1p7] >>14 みたいなテクもね。こういうノウハウをどこかに蓄積しといて 回答するときに「ココ見て」で済むようになると理想的だね。
20 名前:デフォルトの名無しさん mailto:sage [2014/11/09(日) 12:14:22.91 ID:YGc4Q6QV] ●Regular Expressionの使用環境 秀丸Editor ●検索か置換か? 置換 ●説明 HTMLファイルの<div>の中にある<br />を半角スペースに置換したい ●対象データ <html><body>hoge<br />hoge<br /> <div>AAA<br />BBB<br />CCC</div><br /> hoge<br />hoge<br /> <div>DDD<br />EEE<br />FFF</div> </body></html> ●希望する結果 <html><body>hoge<br />hoge<br /> <div>AAA BBB CCC</div><br /> hoge<br />hoge<br /> <div>DDD EEE FFF</div> </body></html>
21 名前:デフォルトの名無しさん mailto:sage [2014/11/10(月) 00:28:51.99 ID:FEGsNsu6] 秀丸の仕様を調べようとしたらマニュアルが有料だった。 \Gが使えれば一行で書けるけど果たして・・
22 名前:デフォルトの名無しさん mailto:sage [2014/11/10(月) 01:08:32.85 ID:qr2IepUu] >>21 ググってみたところhmJre.dllには無さそうだけど www.shuiren.org/chuden/teach/hidemaru/seiki/03.htm hidemaruo.mydns.jp:81/helpsite/hmjre/html/0003_ABOUT_REGULAR.html bregonig.dllを使うこともできるようだから何とかなるだろう homepage3.nifty.com/k-takata/mysoft/bregonig.html 2. 動作環境 秀丸エディタ Ver7.00 + BRegIf.DLL v0,0,2,2
23 名前:デフォルトの名無しさん mailto:sage [2014/11/10(月) 01:35:58.09 ID:aSJ0dFtw] bbq
24 名前:デフォルトの名無しさん mailto:sage [2014/11/10(月) 14:59:48.59 ID:FEGsNsu6] >>22 調べてくれてありがとう。鬼車系が使えるなら余裕だ。 >>6 テンプレのURLを修正 鬼雲 https://github.com/k-takata/Onigmo/blob/master/doc/RE.ja
25 名前:デフォルトの名無しさん mailto:sage [2014/11/11(火) 01:47:12.80 ID:vVlDZA0+] >>6 鬼雲: 鬼車にない新機能 https://github.com/k-takata/Onigmo/blob/master/README.ja
26 名前:デフォルトの名無しさん mailto:sage [2014/11/11(火) 16:32:51.30 ID:OuKhhQWg] お願いします .?l.?i.?b.?e.?r.?t.?y.?a.?r.?t.?w.?o.?r.?x.?\.?.?c.?o.?m.?/ なんてどうかと思ったけど凄いアホみたいだし、よく見たらドメインしょっちゅう変えてるみたいだし ●Regular Expressionの使用環境 2chMate ●検索か置換か? 検索 ●説明 業者レスを消したい ●対象データ 例) pele.bbspink.com/test/read.cgi/ascii2d/1413607695/200 pele.bbspink.com/test/read.cgi/ascii2d/1410920802/652 pele.bbspink.com/test/read.cgi/ascii2d/1410920802/645 pele.bbspink.com/test/read.cgi/ascii2d/1402236462/576 576 名無したん(;´Д`)ハァハァ sage 2014/11/11(火) 16:17:23.41 ID:EYXdTvKd こんな俺でも気づいたら出来た。 もう寂しくないね 一足早い、自分への冬のボーナスだな libertyartw☆orx.c☆om/spggo5/1111.jpg ☆ヌキ
27 名前:デフォルトの名無しさん mailto:sage [2014/11/11(火) 17:08:07.86 ID:+nD4yl+9] ☆
28 名前:デフォルトの名無しさん mailto:sage [2014/11/11(火) 18:35:52.91 ID:9wYSIIRx] [a-z.]*[☆骨][a-z.]* ☆や骨だけでもNGになってしまうが 少々の誤爆ぐらいなんでもないだろ
29 名前:デフォルトの名無しさん mailto:sage [2014/11/11(火) 18:38:46.86 ID:9wYSIIRx] 「☆取って」とか「☆ヌキ」とかに注目した方がバリエーション少ないかもしれんな
30 名前:デフォルトの名無しさん mailto:sage [2014/11/11(火) 19:45:00.54 ID:2mNocMnH] >>27 ちょっと誤爆が怖いです >>28 ありがとうございます。*を+にして様子見ます