Regular Expression(正規表現) Part13©2ch.net

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん 転載ダメ©2ch.net
Regular Expressionスレです。

質問する場合は必ず実装言語や処理系ソフトウェア名を示してください。

前スレ
Regular Expression(正規表現) Part12
http://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デフォルトの名無しさん:2014/11/05(水) 10:20:13.02 ID:wAx7C+BC
◆関連サイト
正規表現メモ
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://www.geocities.jp/oraclesqlpuzzle/regex/
詳説 正規表現
http://www.oreilly.co.jp/books/9784873113593/
正規表現プログラミングFAQ
http://capslockabcjp.kitunebi.com/faq.html
JScript 正規表現の概説
http://msdn.microsoft.com/ja-jp/library/28hw3sce%28v=VS.80%29.aspx
.NET Framework 正規表現言語要素
http://msdn.microsoft.com/ja-jp/library/az24scfc%28v=vs.80%29.aspx
【 初心者 】 正規表現 【 入門 】 ←閉鎖
http://funcchan.blog16.fc2.com/
クックブック ←追加
鬼車、鬼雲 ←追加
4デフォルトの名無しさん:2014/11/05(水) 10:23:37.14 ID:wAx7C+BC
5デフォルトの名無しさん:2014/11/05(水) 10:30:49.67 ID:J7onoSgD
               ノ      ゚.ノヽ  , /}      ...
            ,,イ`"     、-'   `;_' '    ..::::::::::::::...
   ,-、  _.._   (        (,(~ヽ'~     ..:::::::::::::::::::::::
 )'~  レー'  〉   ヽ       i`'}       .:::::::::::::::::::::::
 ~つ     '-ー、  i       | i'     ...:::::::::::::::::::::::
 /       <  /     。/   !  ......:::::::::::::::::::::::::    これは>>1乙じゃなくて
/         ~^´     /},-'' ,●::::::::::::::::::::::::::::::::::::
i、        ,i' _,,...,-‐-、/    i  ::::::::  .:::::::::::::
..ゝ        <,,-==、   ,,-,/      .:::::::::::            放射能がうんたら
 )       {~''~>`v-''`ー゙`'~       ..:::::::::                          ........::.
 {        レ_ノ            ..::::::::.                         ......:::::::::
ノ         ''           ..:::::::                        ...::.:...:::::::::
                     .:::::::::                     ...:......:::::::::::: .
                    .:::::::::::.        .....      ..  ..::::::::::::::::::::::::   :::.
                    ::::::::::::::::.::::::....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.. ::  ::..
                    .:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::    ::.
                    ::::::::::::::::: :::::::::::::::::::::::::::::: :::::
                          .::    ::.  :::
6デフォルトの名無しさん:2014/11/05(水) 11:13:40.86 ID:bAAQDAhE
鬼車
http://www.geocities.jp/kosako3/oniguruma/index_ja.html
鬼雲
https://github.com/k-takata/Onigmo

Boost.Regex(日本語訳)
http://alpha.sourceforge.jp/devel/boost.regex_ja_1_45_0.pdf

秀丸: 複数行にまたがる検索について
http://homepage2.nifty.com/jr-kun/hidemaru_qa/4_regulr.html#RETURNS

サクラエディタ: 改行
http://d.hatena.ne.jp/myokoym/20101219/1292779058
※ サクラエディタでは複数行に渡る検索・置換は出来ません。

正規表現クックブック
http://www.oreilly.co.jp/books/9784873114507/

せいきなんとか
http://akiba.geocities.jp/hp20140401/
7デフォルトの名無しさん:2014/11/05(水) 11:16:30.19 ID:6PdTuYg9
>>6
乙GJ
8デフォルトの名無しさん:2014/11/05(水) 11:32:33.63 ID:bAAQDAhE
[ ある "文字列" を含まない正規表現 ]

▽ 先読みが使える環境

((?!xyz).)* または (?:(?!xyz).)*
後者はカッコによるキャプチャを無効化しています。
1文字以上の繰り返しにしたい場合は * を + に書き換えて下さい。


▽ 先読みが使えない環境

オートマトンの知識が不可欠なため初心者にはまず無理です。
解説サイトですらほとんどがデタラメな作成方法を載せています。
↓正しい作り方はこちら。

xy を含まないものにマッチする正規表現 - Perl正規表現雑技
http://www.din.or.jp/~ohzaki/regex.htm#WithoutXY

xyz を含まないものにマッチする正規表現 - Perl正規表現雑技
http://www.din.or.jp/~ohzaki/regex.htm#WithoutXYZ

↓いろいろな文字列否定

タグの中に "ある文字列" を含まない正規表現
http://akiba.geocities.jp/hp20140401/2014/002.html
9デフォルトの名無しさん:2014/11/05(水) 19:48:22.81 ID:bAAQDAhE
>>6
間違えた。

× ※ サクラエディタでは複数行に渡る検索・置換は出来ません。

○ ※ サクラエディタでは複数行に渡る検索は出来ません。

置換欄に \r\n を入れれば行を増やすことは出来るようだ。
10デフォルトの名無しさん: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デフォルトの名無しさん:2014/11/06(木) 10:28:08.46 ID:lWF4wSu7
>>10
補足
alt=""の置換は出来ればいいや程度で本命はURL文字列ないの置換です。

0埋めが無理な場合は1桁、2桁、3桁の場合で複数回に分けても構いません。
12デフォルトの名無しさん:2014/11/06(木) 13:27:21.94 ID:M7g3dHxa
…?

<!-- 1-24 -->
からURLをどうやって導出するんだ?
13デフォルトの名無しさん: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デフォルトの名無しさん:2014/11/06(木) 16:21:39.82 ID:VPCdIppO
前スレでこの手法で置換してた人がいたね。

1-24

1-0000024

1-\d*(\d{3})(?!\d)

1-$1
15デフォルトの名無しさん:2014/11/06(木) 21:18:29.51 ID:R1OkTjAz
>>10
MKEditorだと正規表現はかなり貧弱な模様なので、マクロかスクリプトでやるべきだよ
例として WSH(JScript)の場合(c:\test.js)
MKEditorのメニュー - ツール - コマンドに、
 コマンドライン: c:\test.js
 パラメータ: %FILENAME%
として登録し実行
ただし、ファイルが外部で書き替わってもMKEditorは認識してくれないので
既存のファイルのみ可能でコマンド実行後、メニュー - ファイル -読み直すことが必要
16デフォルトの名無しさん: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デフォルトの名無しさん:2014/11/07(金) 00:10:01.81 ID:Ac/zCtPZ
皆様ありがとうございます。
>>10
です。
PicasaのURLをその後しばらく眺めていたところ、末尾以外にも変動するところが複数あり、しかも規則性なし、みたいで凄まじく脱力しております。おのれ、Googleめ。

せっかく多数の解決案をお示し頂きましたのに、私の調査不足でこんなことになりすみませんでした。

が、他に、正規表現で対処出来そうな物があるので、頂いた案を参考に自力で出来るように頑張ります。

MKEditorが複雑な置換に向かないということもご指摘ありがとうございます。

まことに申し訳ありませんでした。
18デフォルトの名無しさん:2014/11/07(金) 02:31:20.76 ID:LKxMdqoj
>>9
WSH/JScriptのマクロなどで全文を取得→JScriptのRegExpとreplaceで処理→本文に反映、という手段は一応ある。
こういうのは何処らへんまでテンプレで説明するべきなんだろうなぁ…
質問(問題解決法の問い合わせ)に対する回答としては十分有効なんだが、テンプレ化すべきかと言われると悩む。
19デフォルトの名無しさん:2014/11/07(金) 11:43:10.76 ID:tBFEa1p7
>>14みたいなテクもね。こういうノウハウをどこかに蓄積しといて
回答するときに「ココ見て」で済むようになると理想的だね。
20デフォルトの名無しさん: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デフォルトの名無しさん:2014/11/10(月) 00:28:51.99 ID:FEGsNsu6
秀丸の仕様を調べようとしたらマニュアルが有料だった。
\Gが使えれば一行で書けるけど果たして・・
22デフォルトの名無しさん:2014/11/10(月) 01:08:32.85 ID:qr2IepUu
>>21
ググってみたところhmJre.dllには無さそうだけど
http://www.shuiren.org/chuden/teach/hidemaru/seiki/03.htm
http://hidemaruo.mydns.jp:81/helpsite/hmjre/html/0003_ABOUT_REGULAR.html

bregonig.dllを使うこともできるようだから何とかなるだろう
http://homepage3.nifty.com/k-takata/mysoft/bregonig.html
 2. 動作環境
 秀丸エディタ Ver7.00 + BRegIf.DLL v0,0,2,2
23デフォルトの名無しさん:2014/11/10(月) 01:35:58.09 ID:aSJ0dFtw
bbq
24デフォルトの名無しさん:2014/11/10(月) 14:59:48.59 ID:FEGsNsu6
>>22
調べてくれてありがとう。鬼車系が使えるなら余裕だ。

>>6
テンプレのURLを修正

鬼雲
https://github.com/k-takata/Onigmo/blob/master/doc/RE.ja
25デフォルトの名無しさん:2014/11/11(火) 01:47:12.80 ID:vVlDZA0+
26デフォルトの名無しさん: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
●検索か置換か?
検索
●説明
業者レスを消したい
●対象データ
例)
http://pele.bbspink.com/test/read.cgi/ascii2d/1413607695/200
http://pele.bbspink.com/test/read.cgi/ascii2d/1410920802/652
http://pele.bbspink.com/test/read.cgi/ascii2d/1410920802/645

http://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デフォルトの名無しさん:2014/11/11(火) 17:08:07.86 ID:+nD4yl+9
28デフォルトの名無しさん:2014/11/11(火) 18:35:52.91 ID:9wYSIIRx
[a-z.]*[☆骨][a-z.]*

☆や骨だけでもNGになってしまうが
少々の誤爆ぐらいなんでもないだろ
29デフォルトの名無しさん:2014/11/11(火) 18:38:46.86 ID:9wYSIIRx
「☆取って」とか「☆ヌキ」とかに注目した方がバリエーション少ないかもしれんな
30デフォルトの名無しさん:2014/11/11(火) 19:45:00.54 ID:2mNocMnH
>>27
ちょっと誤爆が怖いです
>>28
ありがとうございます。*を+にして様子見ます
31デフォルトの名無しさん:2014/11/11(火) 22:22:33.00 ID:ri79zur0
でもそれって暫くしたら削除されてるよね?
32デフォルトの名無しさん:2014/11/11(火) 22:33:19.94 ID:le80kSgY
先に☆消してしまえばいくね?
33デフォルトの名無しさん:2014/11/12(水) 07:33:37.69 ID://gO2nAo
性器表現てちんぽまんこだね
34デフォルトの名無しさん:2014/11/12(水) 12:59:24.43 ID:b8dDlQST
Jane用の正規表現だけど↓のスレでも似たような文面のマッチングやってるからそれ使えば
http://mattari.plusvip.jp/test/read.cgi/jane2ch/1387830864
35デフォルトの名無しさん:2014/11/13(木) 04:55:17.80 ID:7fDObI11
秀丸の正規表現 (hmonig.dll) のメモ
http://akiba.geocities.jp/hp20140401/2014/009.html

>>20
もういないかな。

(?:<div\b|\G(?!\A))(?:(?!</?div\b|<br\b)\X)*\K<br\b[^>]*>(?#\n\n\n\n\n\n\n\n\n\n)

これでマッチしない場合は \n の数を増やすとマッチするかも。
36デフォルトの名無しさん:2014/11/13(木) 05:01:04.31 ID:7fDObI11
あ、置換欄は半角スペ1個ね。
37デフォルトの名無しさん:2014/11/13(木) 09:17:28.22 ID:GSTkYFB0
 
38デフォルトの名無しさん:2014/11/13(木) 13:18:22.20 ID:Y2Hw988G
>>35
\nがみにくい
(?#maxlines:10)でいいだろ
39デフォルトの名無しさん:2014/11/13(木) 13:59:12.11 ID:7fDObI11
>>38
ぶw そんなのがあったのね、指摘ありがとう。

コメントに\nを並べるというアイデアは既にあるだろうとは思ってたけど
作者がこういう形で対応していたとは・・。
40デフォルトの名無しさん:2014/11/14(金) 00:56:55.55 ID:UkSSspXB
>>35
横からすみませんがPHPでどう書くか教えていただけませんか?
41デフォルトの名無しさん:2014/11/14(金) 01:41:37.51 ID:1+T9Ha44
>>40
秀丸特有の問題なのにPHPでの解決法を聞かれてもなぁ…
行跨ぎできないのだとしても、プログラミング言語なら改行消して処理しろで終わりだし。
42デフォルトの名無しさん:2014/11/14(金) 02:00:41.77 ID:IxUEtMym
そうでなく、1行の正規表現で置換するやり方を知りたいんじゃないかな。

\G ・・・ 文頭、または前回マッチした文字列の直後の位置にマッチする
     前回マッチした文字列のみにマッチさせたい場合、\G(?!\A) と書く。

\K ・・・ これより前にある正規表現にマッチした文字列をマッチ文字列に含めない

\A ・・・ 文頭のみにマッチする。行頭にはマッチしない。

\X ・・・ 改行文字を含む任意の1文字にマッチする。

(?# ) ・・・ (?# この部分はコメントとして無視されます )

\X 以外はPHPでも同じじゃないかな? \X を (?:.|[\r\n]) に書き換えるだけで動くはず。(たぶん)
最後のコメントは秀丸用のおまじないなのでPHPにはいりません。(~-~)b
43デフォルトの名無しさん:2014/11/14(金) 20:23:32.42 ID:UkSSspXB
>>42
おお
ちゃんと動きました!
感謝です
似たような事で詰まってたので非常に助かりました
44デフォルトの名無しさん:2014/11/14(金) 20:43:12.93 ID:MnmxP/GB
なるほど
45デフォルトの名無しさん:2014/11/14(金) 20:55:47.58 ID:DTSyJ1hY
d
46デフォルトの名無しさん:2014/11/14(金) 22:25:06.90 ID:IxUEtMym
(~-~)b
47デフォルトの名無しさん:2014/11/14(金) 22:33:50.86 ID:ptj087p2
任意の1文字にマッチは普通[\s\S]って書かないか?
48デフォルトの名無しさん:2014/11/14(金) 22:37:22.10 ID:IxUEtMym
説明めんどうだからああ書いたけどPHPならオプションでピリオドの動作を替えられる。
49デフォルトの名無しさん:2014/11/14(金) 22:52:08.85 ID:IxUEtMym
>>35の正規表現も分かりやすいようにカッコをまとめたりしないように書いた。
やろうと思えばもっと処理の軽い書き方も出来る。
50デフォルトの名無しさん:2014/12/09(火) 22:48:29.34 ID:HBMBEtpF
あいうabcえお

\<abc\>
がマッチしないのはなぜですか?
51デフォルトの名無しさん:2014/12/10(水) 00:25:21.40 ID:aGgAMtGi
うわあ
52デフォルトの名無しさん:2014/12/10(水) 04:22:10.09 ID:vJvh8GaS
\を使ったエスケープ文字は、特定のものしか使えない

\<,\> こういうエスケープ文字があるかね?
無ければエスケープされずに、<,> と解釈されるだけ

つまり、\<abc\> → <abc>
53デフォルトの名無しさん:2014/12/10(水) 05:03:04.97 ID:HaQsk3gz
www
54デフォルトの名無しさん:2014/12/10(水) 05:31:24.35 ID:7sJsZ3GA
わろた
55デフォルトの名無しさん:2014/12/10(水) 07:49:49.52 ID:qwB6bqKA
>>50
[あーお]も単語構成文字と見做す処理系だとマッチしないな。
56デフォルトの名無しさん:2014/12/10(水) 07:50:17.57 ID:qwB6bqKA
>>50
[あーお]も単語構成文字と見做す処理系だとマッチしないな。
57デフォルトの名無しさん:2014/12/10(水) 18:29:36.14 ID:aGgAMtGi
>>50
[あーお]も単語構成文字と見做す処理系だとマッチしないな。
58デフォルトの名無しさん:2014/12/10(水) 20:58:37.52 ID:Lctd7lUm
ああおさんウザいっす
59デフォルトの名無しさん:2014/12/14(日) 23:54:23.95 ID:tpBHSSwh
_Abc
_Xyz
にはマッチするけど
_ABCにはマッチしない正規表現おしえて
60デフォルトの名無しさん:2014/12/14(日) 23:58:08.06 ID:g1m5xeWZ
(_Abc|_Xyz)
じゃダメかしらん?
61デフォルトの名無しさん:2014/12/15(月) 15:37:38.43 ID:oa6oH0LD
>>59
lookaheadが使用可能なら「_(?!ABC).+」
でも_ABCDもマッチさせるとかであればわからない
62デフォルトの名無しさん:2014/12/27(土) 14:04:42.15 ID:BGpvdfNM
●Regular Expressionの使用環境
Ruby

●検索か置換か?
検索

●説明
(ひらがな、カタカナ、漢字、英数字(全角/半角)、","(全角/半角)、"."(全角/半角))のみの文字列を抽出したい


●対象データ
 1不思議な2新聞3
 .に書,いて.ある,
 +通り-に行/動し*た結果
 憧れ(の)同級生と…

●希望する結果
 1不思議な2新聞3
 .に書,いて.ある,

よろしくお願いします。
63デフォルトの名無しさん:2014/12/27(土) 15:37:10.79 ID:8H3WtYVY
/\A[ここにマッチさせたいものを全部書く]+\z/
64デフォルトの名無しさん:2014/12/27(土) 16:24:38.35 ID:BGpvdfNM
>>63
ありがとうございます。
うまくできました。
65デフォルトの名無しさん:2015/01/02(金) 21:45:08.35 ID:v2/hSox9
●Regular Expressionの使用環境
Ruby
●検索か置換か?
検索
●説明
後ろ向きの最短一致をさせたい
●対象データ
<a>あいう<b>123</b>えお</a><a>かきく<b>456</b>けこ</a>
●希望する結果
456で検索して
<a>かきく<b>456</b>けこ</a>

よろしくお願いします。
66デフォルトの名無しさん:2015/01/03(土) 03:21:52.63 ID:ssBgeI0p
>>6の一番下のタグの中に「ある文字列」を含まない正規表現
67 【ニダー】 :2015/01/03(土) 06:50:23.28 ID:OaaIU2j6
!omikuji
68デフォルトの名無しさん:2015/01/11(日) 23:11:27.03 ID:s5YQ0YAX
●Regular Expressionの使用環境
サクラエディタ

●検索か置換か?
置換

●説明
謹賀新年hogehoge>
  ↓
謹賀新年>

ランダムな文字列であるhogehogeを一括で消す

突っ込みどころあると思いますがどうかよろしくお願いします。

●対象データ
謹賀新年hogehoge>

ランダムな文字列:hogehoge

●希望する結果
謹賀新年>
69デフォルトの名無しさん:2015/01/11(日) 23:54:03.51 ID:UU82qEam
ランダムな文字列というからにはhogehogeはいろいろ変化するんだよね
謹賀新年と>は固定でいいの?
70デフォルトの名無しさん:2015/01/11(日) 23:57:48.34 ID:s5YQ0YAX
ハイ!
71デフォルトの名無しさん:2015/01/12(月) 00:26:59.54 ID:+TbEDHOy
だったら難しいことは何もないような・・・
置換前:(謹賀新年).*?(>)
置換後:$1$2
72デフォルトの名無しさん:2015/01/12(月) 02:23:55.74 ID:6K5npcv7
ありがとうございます
73デフォルトの名無しさん:2015/01/13(火) 11:11:49.58 ID:ZSJSYGMP
テスト
74デフォルトの名無しさん:2015/01/13(火) 11:15:11.62 ID:ZSJSYGMP
何故か書き込めないのでテキストファイルでアップしました
http://www.dotup.org/uploda/www.dotup.org104566.txt
宜しくお願いします
75デフォルトの名無しさん:2015/01/13(火) 13:20:35.50 ID:kceTGmH6
分かりやすく言えば

1、 「スペース2つ」 を区切りとして、前、後 の2つに分断する。

2、 その 前 のみを取り出す

という処理。

これによってスペース2つが出現するまでの文字列が出力される。
76デフォルトの名無しさん:2015/01/13(火) 14:16:20.33 ID:ZSJSYGMP
>>75
ありがとうございます
@番目の
「スペース2つ」→\s\s
「分ける」がどれに当たるのでしょうか?
ググってもsplitのページがヒットしてしまいます
A番目の
「前のみ」はどれに当たるのでしょうか?

「正規表現」でググると
JavaやPHPなど高度なプログラミングみたいのがヒットしてしまうのですが
「正規表現」にも多種あるようですが
自分のやろうとしている「正規表現」はなんて検索すればいいのでしょう?

宜しくお願いします
77デフォルトの名無しさん:2015/01/13(火) 17:09:16.81 ID:FS/vx9x/
>> 74
> Taskerのスレで下記の様な正規表現でアドバイス戴けたのですが
> その意味が解らないので解説頂けないでしょうか?
> (.*?)\s\s.*
> 自分なりに調べたのですが理解できませんでした
> (.*?)→0文字に一致?それとも0文字を$1に格納?
> \s\s.*→2つのスペースに0文字以上の文字?

例えば、正規表現が `.\s' なら、何か1文字とそれに続く空白文字1文字にマッチする
これを >>75 が言った言い方だと、空白文字1文字と、その前の何か1文字にマッチする
前のみっていうのは、文字の位置的に `\s\s' の前に `(.*?)' が有るから

少しくどくなるが、`(.*?)\s\s.*' の場合、検索を始めた箇所(最初は先頭)から、
`.': 改行以外の任意のある文字、一文字に一致する
`*?': その一致するものは無くてもいいけど、何か文字が有ればずーっと文末まで一致する
...では無くて、`\s\s'の手前までの全てに一致する

`?' 無しの `.*' だと、一致したもののうち一番長いものを採用し、途中の`\s\s'は`.*' に含まれてしまうが、
`?' が付いていると、最初に見つかった`\s\s'を採用して、その手前までになる

`\s\s': で、空白文字の2文字に一致し、以下略

ココら辺で、遊んでみれば。(さくらが咲いてますよって出るので、comにしてある)
scriptular.com
rubular.com
regexr.com

公式Userguideはここっぽいね。使える正規表現も書いてあった
http://tasker.dinglisch.net/userguide_summary.html#matching.html
#Pattern Matching ##Regular Expression Matching ###Matching Rules
78デフォルトの名無しさん:2015/01/13(火) 17:31:32.72 ID:ZSJSYGMP
>>77
詳しい解説とtxtファイルの引用まで本当にありがとうございます!
`\s'などの個々の意味までは調べて理解できたのですが
その組合わせとなると本当に難しいです
解説頂いた`(.*?)'部分をコピペ保存し整理しながら読みといてみたいと思います
本当にありがとうございました
79デフォルトの名無しさん:2015/01/13(火) 18:22:05.65 ID:ZSJSYGMP
当初↓のサイトとにらめっこし理解に苦しんでいたのですが
http://msdn.microsoft.com/ja-jp/library/cc392020.aspx
具体的な詳しい解説をして下さっ
たので理解できました!
今回の↓を正規表現にすると
[メールアドレス](スペース)[件名]
.*?\s.*と表現でき
.*→全ての文字列に一致してしまうが?を付加で最少の文字列を採用させる
それは\sまで
また()で一致した[メールアドレス]部分を記憶させる
という具合なんですね
今回の様に[メールアドレス]部分のみを記憶したいのであれば
(.*?)\sだけで
.*は要らないのでしょうか?
また()で記憶した[メールアドレス]を呼び出したい場合は
$0指定で合ってますでしょうか?
80デフォルトの名無しさん:2015/01/14(水) 01:39:07.16 ID:SHHyvNBq
> 今回の様に[メールアドレス]部分のみを記憶したいのであれば
> (.*?)\sだけで.*は要らないのでしょうか?

実際のデータが[メールアドレス](スペース)[件名]では
`(.*?)\s\s.*' では `\s\s' の部分がマッチしないと思うんだけど、

実際のデータが[メールアドレス](スペース)[件名]で合っているなら、要らないんじゃないか
私なら、先頭に `^' も付けて、また確実にスペース1つならば、\sより、` 'にして
結果、`^(.*?) ' とか、`^([^ ]*) ' にする。しかし、試せないので...実際に試してみて

> また()で記憶した[メールアドレス]を呼び出したい場合は$0指定で合ってますでしょうか?
一般的に $0 はマッチした文字列全体を、$1 は最初のカッコでマッチした文字を参照するので
`(.*?)\s' や `^([^ ]*) ' ならば、$1でしょう。$0ならスペースも含まれる
`$1'に置換する所を、`===>$0<===' に置換するようにして表示してみれば違いが分かるかも

ところで、こんな記述を見つけた。K9メールは関係ないかもしれないけど、一応貼っときます
http://pralin.info/tasker/tasker_userguide/user_guide/variables.html
> Built-In Variables (組込み変数)
> 略
> Email From / Cc / Subject / Date / Time (‘K9メール’で受信したEメールに関する情報)
> (dynamic)
> %EFROM / %ECC / %ESUBJ / %EDATE / %ETIME
> K9アプリケーションで前回受信したEメールの、送信者、Cc、件名、受信日、時間です。
81デフォルトの名無しさん:2015/01/14(水) 02:04:04.04 ID:SHHyvNBq
訂正

私なら、略
結果、`^(.*?) ' とか、`^([^ ]*) ' に、もしくは、`^[^ ]*' にして、置換を `$0' にする
82デフォルトの名無しさん:2015/01/14(水) 05:30:44.58 ID:xEcaho2u
重い
83デフォルトの名無しさん:2015/01/14(水) 05:52:23.88 ID:C0oqSSBJ
不安定
84デフォルトの名無しさん:2015/01/14(水) 06:16:54.15 ID:C0oqSSBJ
不安定
85デフォルトの名無しさん:2015/01/14(水) 07:03:44.38 ID:qCW3djxi
本文が長すぎます
86デフォルトの名無しさん:2015/01/14(水) 07:09:40.66 ID:GdCbM//t
>>80-81
低レベルな自分に
何度も丁寧に本当にありがとうございます
コピペ保存し後でじっくり読み解いてみたいと思います!
Androidメーラーである[K-9]を利用すれば手っ取り早いみたいなんですが
ActiveSyncプロトコルに対応していないので
Android標準メーラーで[From]を変数に格納し鳴り分けに取り組んでいます
その課程での正規表現でした
その難しさに圧倒されていますが
皆さんの教えで何とか理解し組んで動いた時の感動はひとしおです
87デフォルトの名無しさん:2015/01/14(水) 19:15:28.30 ID:GdCbM//t
>>80-81
お世話になってます
追加で提案して頂いた正規表現
■`^([^ ]*) '→[スペース]ではない文字を0回以上[スペース]まで繰返し検索で()によるって$1に記憶
■`^[^ ]*'→[スペース]ではない文字を0回以上繰返し検索でその(全ての)結果が$0に記憶される←[スペース]入っていないのでそのまま使える
で合ってますかね?
追加の提案で理解が深められた気がします!
早速Taskerにて検証してみました
【表現】`(.*?)/s'
【結果】[email protected][件名]
【表現】`^([^ ]*) '
【結果】[email protected] [件名]
【表現】`^[^ ]*'
【結果】[email protected] [件名]
でした
これはTaskerの仕様で
全文を正規表現で表し
記憶させたい部分を()で指定しなければ駄目なので
敢えてT'[.*?]/s.*`と教え頂けたと学ぶことができました
本当に勉強になりました
ありがとうございました
(`・ω・´)ゞ多謝
88デフォルトの名無しさん:2015/01/15(木) 12:02:13.03 ID:wf767Mv0
検索と置換を間違えて嘘を教えた orz だけど、理解が進んだ様で良かった

> これはTaskerの仕様で
Taskerだけでなく、置換では、マッチしなかったものはそのまま残る。ごめん

例えば、Java
public class Sample{
 public static void main(String []args){
  String str = "ABC_ezwebNeJp KENMEI";
  str = str.replaceFirst( "^(.*?) ", "==>$1<==" );

  System.out.println( str );
  // it prints "==>ABC_ezwebNeJp<==KENMEI"
  
 }
}

sed では
$ echo 'ABC_ezwebNeJp KENMEI' | sed -e 's/^\([^ ]*\) /==>\1<==/'
==>ABC_ezwebNeJp<==KENMEI


書き込めなかったので ABC_ezwebNeJp にしてる
89デフォルトの名無しさん:2015/01/15(木) 20:39:57.84 ID:PKDwQvNb
>>88
補足までありがとうございます
> 置換では、マッチしなかったものはそのまま残る。
テキストエディタなどでの置換をイメージすると
確かにおっしゃる通りの振る舞いですね
すっきりすることができました
最後まで本当にありがとうございました
90デフォルトの名無しさん:2015/01/17(土) 19:38:09.41 ID:O/W9cU3U
お世話になっています
Taskerスレで当初教えて頂いた`\s\s'表現には
差出人がスペースを含めた名称を付けた場合の対処まで深く考えられたものでした
http://anago.2ch.net/test/read.cgi/applism/1417270634/442
高度な処理イメージをして組まなければならない世界なんですね
恐れ入りました(敬
91デフォルトの名無しさん:2015/01/17(土) 21:40:07.01 ID:IxqCDXNU
>>90
\s\s の話は不思議に思って >>80 で、念を押してたんだけど、
まあこれも勉強でしょ

それよりも、ある程度完成したみたいで良かったね
92デフォルトの名無しさん:2015/01/17(土) 22:12:21.56 ID:O/W9cU3U
>>91
先程完璧に完成することができました!
こちらのスレでのご教授のお陰でもあります
普段何気に利用しているソフトウェア
それを組み上げて作ってるプログラマの偉大さを今回痛感させられました
本当にありがとうございました
93デフォルトの名無しさん:2015/01/21(水) 23:31:05.33 ID:Xic+hwyG
連続するメタ文字"+()+"を正規表現でマッチさせたいとき
"\+\(\)\+"とやってますけど、範囲を指定してエスケープするにはどうすれば良いですか?
某サイトにあった"\Q+()+\E" では動きませんでした。エクセルVBAです。
94デフォルトの名無しさん:2015/01/22(木) 00:02:23.35 ID:I+VI4YxC
ここを見る限りVBAではサポートされてないんじゃね
http://msdn.microsoft.com/ja-jp/library/ms974570.aspx
95デフォルトの名無しさん:2015/01/22(木) 13:36:09.30 ID:V7uGlpy4
\+\(\)\+
96デフォルトの名無しさん:2015/01/22(木) 14:09:54.22 ID:V7uGlpy4
すいません、「範囲を指定して」を見落としてたんで上のは取り消しで・・。
97デフォルトの名無しさん:2015/01/22(木) 16:22:30.24 ID:I+VI4YxC
それを見落としたとして何故その回答になる
98デフォルトの名無しさん:2015/01/22(木) 16:41:37.50 ID:V7uGlpy4
無意識に適当に読んでたらしく

>連続するメタ文字"+()+"を正規表現でマッチさせたいときエスケープするにはどうすれば良いですか?
>某サイトにあった"\Q+()+\E" では動きませんでした。

という質問だと思って答えてしまった。環境くらい書いてよとか思ったけどしっかりVBAって書いてあったw
99デフォルトの名無しさん:2015/01/23(金) 20:13:44.42 ID:9tnFJzS/
#include <iostream>
#include <regex>
#include <string>
#include <locale>
using namespace std;
void main()
{
wcout.imbue(locale("japanese"));
const wchar_t* input = L"Dim str As String = \"テスト。文字列の中に'がある\" 'コメント";
wcout << L"input ->" << input << L"<-" << endl;
const wchar_t* pattern = L"\'.*$";
const wchar_t* replacement = L"";
wregex re(pattern);
wstring result = regex_replace(input, re, replacement);
wcout << L"result->" << result << L"<-" << endl;
}

VB.NETのソースからコメントを全部取り除くプログラムをVC++2013のwregexで
作ってみたのですが、文字列の中にあるシングルクオーテーションにもマッチ
してしまいます。これを回避して、本来のコメントのみにマッチする表現を
教えて下さい。
100デフォルトの名無しさん:2015/01/23(金) 20:17:47.22 ID:9tnFJzS/
ああ、それとコメントには ' 以外に REM で始まる行もコメントの
ようなので、それにも対応したようなのが出来れば最高です。
よろしくお願いsいます。
101デフォルトの名無しさん:2015/01/23(金) 21:10:32.13 ID:eFAAQwvF
102デフォルトの名無しさん:2015/01/23(金) 21:23:49.57 ID:T+1A7YgE
REM
103デフォルトの名無しさん:2015/01/23(金) 21:46:31.95 ID:/pjVQAK4
仕事を人に丸投げすんなよ。。。
つーかコメントは入れ子があるから無理
104デフォルトの名無しさん:2015/01/23(金) 21:51:48.65 ID:/pjVQAK4
VBはブロックコメント無いのか
じゃあ

^\s*([Rr][Ee][Mm]|').*$

でいいんじゃね
105デフォルトの名無しさん:2015/01/23(金) 22:35:00.86 ID:Hr76SqrY
>>99
そんなレベルで満足せずに
VBコンパイラ作れ
106デフォルトの名無しさん:2015/01/24(土) 09:28:11.06 ID:VaaHq///
>>99
考え方だけ。クォートのものを優先してマッチさせる regexp を使う
クォートでマッチしたものは、置換しない

あまり考えないで書いたコードなので、適当に修正して下さい
const wchar_t* pattern = L"(\"[^"]*\")|('[^']*')|('.*$|REM.*$)";
const wchar_t* replacement = L"$1$2";
107デフォルトの名無しさん:2015/01/25(日) 00:26:25.13 ID:PYkp2Zoh
>>106
教えていただいたパターンでいい感じでマッチしました。
大変ありがとうございます。
正規表現の初心者なので、教えていただいたパターンの意味が
今一つよく理解できていません。| ってOR の意味ですよね?
これでなんで期待通りの動きをするのか分らない。。。ああ難しい。
108デフォルトの名無しさん:2015/01/25(日) 02:57:07.01 ID:n/w7cTTn
ひんと
$1→(\"[^"]*\")
$2→('[^']*')
$3→('.*$|REM.*$)
109デフォルトの名無しさん:2015/01/25(日) 06:56:11.09 ID:TpaFIK4z
$1→(\"[^"]*\")
$2→('[^']*')
$3→('.*$|REM.*$)

$1は、"", "a", "abc"
$2は、'', 'a', 'abc'

$3は、', 'a, 'abc,
REM, REMa, REMabc,
110デフォルトの名無しさん:2015/01/25(日) 09:24:32.42 ID:giPZi5FN
ややこしい
111デフォルトの名無しさん:2015/01/25(日) 09:46:27.44 ID:FlI9/mjR
そんな事ないよ
112デフォルトの名無しさん:2015/01/25(日) 09:58:30.16 ID:qMB0fa9P
正規表現むずかしい
113デフォルトの名無しさん:2015/01/25(日) 11:38:26.01 ID:JhgO84F7
正規表現はずかしい
114デフォルトの名無しさん:2015/01/25(日) 12:20:38.68 ID:qMB0fa9P
Regular Expression
115106:2015/01/25(日) 12:31:28.78 ID:nzAr/S0d
>>107
それは Tasker の時の様にならずに良かった

> 分らない。。。ああ難しい。
.NET も含めて一般的な従来型NFAエンジンは、
A|B|C
だと、Aとマッチするか試み、ダメなら元に戻ってBを試す

const wchar_t* replacement = L"## 1: ==>$1<== ## 2: ==>$2<== ## 3: ==>$3<==";
とでもして、試せば理解できるかもよ

あと、ここら辺読めば
詳説正規表現
4.3 正規表現主導かテキスト主導か
4.3.1 正規表現主導型のNFAエンジン
https://books.google.co.jp/books?id=RJFJ2I-thlsC&lpg=PA177&ots=zXRiExOl30&dq=nfa%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%B3%20dfa%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%B3&hl=ja&pg=PA217#v=onepage&q&f=false

正規表現の動作の詳細
https://msdn.microsoft.com/ja-jp/library/e347654k(v=vs.110).aspx

man 7 regex
http://linuxjm.sourceforge.jp/html/LDP_man-pages/man7/regex.7.html
116デフォルトの名無しさん:2015/01/26(月) 15:50:46.51 ID:pD45ZdVE
>>108>>109
>>115
詳しい解説ありがとうございます。その後、必死で正規表現を勉強している
のですが、なかなか進みません。
その過程で、VisualStudio2013では 肯定先読みとか肯定後読みとかが
使えないようなのですが
そういうのを使いたい場合には、Boostを使うしかないですか?
117デフォルトの名無しさん:2015/01/26(月) 16:26:04.50 ID:eCIxtoMN
正規表現は遊びながら覚えると面白いよ。難しく考えないほうがいい。
boostはperl並に強力な正規表現エンジンだからこれが使えるなら是非使おう。
118デフォルトの名無しさん:2015/01/26(月) 17:38:42.42 ID:oVT0PKMK
> boostはperl並に強力な正規表現エンジン
119デフォルトの名無しさん:2015/02/02(月) 11:29:22.04 ID:DtWOP1ys
正規表現はテキストファイルの中にある次の二つの行を見付けて
//---ここから


//---ここまで削除

この範囲にある行(この二行も含む)を全部削除するような処理に使えますか?
c++のregexです。
120デフォルトの名無しさん:2015/02/02(月) 11:36:39.77 ID:EZQev4rj
「---ここから」とか「---ここまで削除」が付いてるなら可能じゃね?
ネストしてたら知らんけど
121デフォルトの名無しさん:2015/02/02(月) 11:39:40.72 ID:DtWOP1ys
>>120
レスありがとうございます。ネストは無しです。
122デフォルトの名無しさん:2015/02/02(月) 12:45:55.80 ID:RH7feET7
その程度なら正規表現使わないでも書けるだろうしその方が速くないか
123デフォルトの名無しさん:2015/02/02(月) 13:38:37.06 ID:8c110nuS
>>119

質問に回答致します。

> 使えますか?
はい。

では次の方どうぞ。
124デフォルトの名無しさん:2015/02/03(火) 17:16:25.69 ID:T6BqtAUV
これが、ベストアンサー
>>122
125デフォルトの名無しさん:2015/02/19(木) 16:10:49.61 ID:a/uQUW78
rubyで下記の文字列から頭が■の部分だけを抜き出したいのですが、うまくできません。

"□あああ■いうえお□かきくけ■さしすせ□たちつて□となにぬ□ねの■はひふ□へほ"

理想の結果["■いうえお","■さしすせ","■はひふ"]
126デフォルトの名無しさん:2015/02/19(木) 18:27:15.60 ID:W1BgVy30
>>125
■から□の直前までを抜き出す正規表現です
+ とか u は適当に修正

"□あああ■いうえお□かきくけ■さしすせ□たちつて□となにぬ□ねの■はひふ□へほ".
scan( /■[^□]+/u )
127デフォルトの名無しさん:2015/02/20(金) 09:05:16.00 ID:eLhLRYkP
>>126
ありがとうございます。あっさりできました。
色々とごちゃごちゃ試しましたがこんなに単純にできるんですね。
128デフォルトの名無しさん:2015/02/23(月) 16:22:27.12 ID:Ux68NKC8
>>125と似た感じなのですが、
rubyで下記文字列から円の前の金額部分を抜き出したいです。宜しくお願いします。
"123百万円(250ほげ)、285百万円(ほげ125)
1億2千3百万円
1,230万円(ほげ2000.12ほげ)
1,230,000円(2000.12ほげ)"
129デフォルトの名無しさん:2015/02/23(月) 16:30:14.61 ID:Ux68NKC8
自己レス>>128です。
できた気がしますが、こんなんで良いんでしょうか?
str.scan(/\d[^()]+?[億千百万]?円/)
130デフォルトの名無しさん:2015/02/24(火) 18:51:15.23 ID:07WHyE0z
>>128
[億千百万]? の部分は、提示したデータだと、抜いても結果が変わらない
何かの考えがあって入れているのだと思うけど、その意図が今一つ不明
実際のデータが、示されたものと違うのかな?

> こんなんで良いんでしょうか?
上記の問題を検討した上でだが、実際のデータから希望の結果が出るなら
それで良いんじゃあないかと思います

あえてここで、何か答えるとすると
もしも、(...)で囲まれたほげ数字にも、円で終わるものが有ったりしてややこしくなるなら、
一度に処理しようとせずに、予め元のデータから(...)だけを削除しておくのも良い手だと思う

# `.*?' の代わりに `[^))]*' でも同じ。良く分からないから半角()も入れておいた
# 「円の前の金額部分」という事なので、円の手前までを抜き出したもの
# ちなみに、この scan() だけでも、今回の解答になっています
str.gsub( /[((].*?[))]/, '' ).scan( /[\d,億万千百]+?(?=円)/ )
131デフォルトの名無しさん:2015/02/24(火) 21:49:57.70 ID:3nVqEvm0
>>128
テンプレすら読めないの?
132デフォルトの名無しさん:2015/02/24(火) 22:30:27.97 ID:22oMyd1b
●Regular Expressionの使用環境
Firefox 35.0.1

●検索か置換か?
検索

●説明
q=の後の検索ワードを抽出したいです
現在の正規表現がこうなっているんですが1行目の検索ワードが抽出できません
^http[s]?://([^.]+\.)?google\.([a-z]+\.?)+/[^?/]*\?(.*&)?(as_)?q=([^&]+)
どのように修正すればいいでしょうか?

●対象データ
https://www.google.co.jp/#q=てすと
https://www.google.co.jp/webhp?hl=ja#hl=ja&q=てすと
https://www.google.co.jp/?gws_rd=ssl#q=てすと

●希望する結果
てすと
てすと
てすと

よろしくお願いします
133デフォルトの名無しさん:2015/02/24(火) 22:35:07.88 ID:KGzF+WVu
q=(.*)$
134デフォルトの名無しさん:2015/02/24(火) 23:08:17.07 ID:22oMyd1b
>>133
ありがとうございました
135デフォルトの名無しさん:2015/02/24(火) 23:12:37.33 ID:22oMyd1b
>>132の質問が色々と間違っていました
回答いただいた>>133さん申し訳ありません
すいませんが、改めて質問させてください

●Regular Expressionの使用環境
Firefox 35.0.1の拡張機能SearchBox Sync1.4.0
※拡張機能のSearchBox Sync1.4.0のページです
 https://code.google.com/p/searchboxsync/wiki/HowTo

●検索か置換か?
検索

●説明
検索語句を抽出したいです
デフォルトではこうなっているのですが
^http[s]?://([^.]+\.)?google\.([a-z]+\.?)+/[^?/]*\?(.*&)?(as_)?q=([^&]+)
これだと2番目の検索語句が抽出できませんでした

●対象データ
https://www.google.co.jp/#q=あああ
https://www.google.co.jp/?gws_rd=ssl#q=いいい
https://www.google.co.jp/webhp?hl=ja#hl=ja&q=ううう

●希望する結果
あああ
いいい
ううう

度々すみませんが、よろしくお願いします
136135:2015/02/24(火) 23:14:28.24 ID:22oMyd1b
>これだと2番目の検索語句が抽出できませんでした
紛らわしい書き方だったので補足です

2番目というのは対象データのこのことです
https://www.google.co.jp/?gws_rd=ssl#q=いいい
137デフォルトの名無しさん:2015/02/25(水) 00:46:10.59 ID:v34fXgPe
そのアドオンは設定を変えてもリスタすると戻っちゃうからこっちに変えた方がいいよ
https://addons.mozilla.org/ja/firefox/addon/conform-searchboxwith-automati/

その上で正規表現をこう変える(後ろに#を追加)
[&?#]q=([^&#]+)
138135:2015/02/25(水) 01:05:33.84 ID:hHD/IuY8
>>137
設定が元に戻るの気づきませんでした
代わりのアドオンまで教えてもらってありがとうございます!
さっそく使ってみたいと思います
どうもありがとうございました
139デフォルトの名無しさん:2015/02/25(水) 09:39:58.62 ID:q6hZn1+T
>>130
>str.gsub( /[((].*?[))]/, '' ).scan( /[\d,億万千百]+?(?=円)/ )
よくわからない質問に回答いただきありがとうございます。
書いて頂いた式についてなんですが、(?=円)の表現は初めて見たのですがどんな意味なのでしょう?
140デフォルトの名無しさん:2015/02/25(水) 10:17:29.13 ID:l4DgES9U
>>139
先読み

あとは自分でググれ
141デフォルトの名無しさん:2015/03/01(日) 15:50:28.44 ID:+/3fb9m1
PHPでやってます。

mb_eregi("a(?!b|c)","ad"));

mb_eregi("a((?!b))","ad"));
の否定先読みがマッチするのは予期通りなのですが、

mb_eregi("a((?!b|?!c))","ad"));
がマッチしない理由がわかりません。どうしてでしょうか?
142141:2015/03/01(日) 15:52:19.09 ID:+/3fb9m1
(末尾の「)」が多かったので訂正します)
PHPでやってます。

mb_eregi("a(?!b|c)", "ad");

mb_eregi("a((?!b))", "ad");
の否定先読みがマッチするのは予期通りなのですが、

mb_eregi("a((?!b|?!c))", "ad");
がマッチしない理由がわかりません。どうしてでしょうか?
143デフォルトの名無しさん:2015/03/01(日) 16:03:57.64 ID:Sga1DM1F
144デフォルトの名無しさん:2015/03/01(日) 16:51:00.43 ID:2LvLY08l
ただの文法エラーじゃないの?
(?!)はグループの先頭にしか置けないと思うが
145141:2015/03/01(日) 20:20:08.60 ID:+/3fb9m1
>>144
おおまさに。正規表現自体が無効だったらしく、
PHPのエラーログがありました。

PHP Warning: mb_eregi(): mbregex compile err: target of repeat operator is not specified
146デフォルトの名無しさん:2015/03/06(金) 15:42:56.91 ID:AIFKHCSQ
JavaScriptです。

どうしても、できないので申し訳ないのですが、お尋ねします。

[キノコ] ⇒ たけのこ

という具合に[ ]をはずした上で、さらに文字列を置換したいです。
どのような正規表現を書けば良いのでせうか?
147デフォルトの名無しさん:2015/03/06(金) 16:42:47.64 ID:MdPyuokm
単に[]をエスケープしてないだけでは?
/\[キノコ\]/
/\[.*?\]/
148デフォルトの名無しさん:2015/03/09(月) 08:48:41.87 ID:p+uKF6zv
>>147
やってみましたが、駄目でした。
[キノコ]⇒[たけのこたけのこたけのこ]

となってしまいました。
str.replace("/\[キノコ\]/","たけのこ")としてるのですが、どうも、自分の
今作りこんでるものでは、RE2構文でなければならないということのようです。

プレーンなJavascriptでは普通に置換ができました。ありがとうございます。
残念ですが、何か他の手段を考えてみます。
149デフォルトの名無しさん:2015/03/09(月) 12:24:04.78 ID:tyzQwAhL
Google - RE2 構文
https://code.google.com/p/re2/wiki/Syntax

見たところそんなに違いは無さそう。もしかしたら "" で囲うから \ を \\ にしないといけないとか?

str.replace("/\\[キノコ\\]/","たけのこ")
150デフォルトの名無しさん:2015/03/09(月) 13:26:27.64 ID:p+uKF6zv
>>149
どもです。
試してみました。そのままだと上手く行かなかったのですが、参考にして以下の
ようにしたら、うまくいきました。

str.replace("(\\[)(キノコ)(\\])","たけのこ");
/ではなく、()で前後の[]をエスケープするしょりを括るみたいでした。

見事置換が出来ました。大変感謝です。ありがとうございます。
151デフォルトの名無しさん:2015/03/09(月) 15:16:50.04 ID:tyzQwAhL
それもしかしたらカッコいらないかもね。とりあえず出来て良かった、おつおつ。
152デフォルトの名無しさん:2015/03/09(月) 17:33:06.97 ID:WXngf1h3
正規表現の方は "" で括ってしまうより
 str.replace(/\[キノコ\]/g, "たけのこ")
みたいな方が。
g や m や i などフラグも簡単だし。
"" で括らないと何かマズい?
153デフォルトの名無しさん:2015/03/09(月) 18:26:42.44 ID:gggD73W5
>>152

> 今作りこんでるものでは、RE2構文でなければならないということのようです。
だそうなので、String.prototype.replaceが置き換えられてるんじゃね
154デフォルトの名無しさん
なるほど、スレ汚しスマヌ