[過去ログ] Regular Expression(正規表現) Part12 (1001レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
798(1): 2014/08/26(火)22:54 ID:/YmoB5m1(1) AAS
>>793
782のいう「まともなエディタ」が何かわかんないけど、
とりあえずEmacsで\,( )使って中でformatでも呼べばできるんじゃね。
必要ならstring-to-numberあたりもあわせて。
799(1): 2014/08/26(火)23:14 ID:AKSJinfO(2/2) AAS
任意のスクリプトを実行できるエディタなら同じことできそうだね
800: 2014/08/26(火)23:41 ID:jaIpu19W(1) AAS
子供の煽りは放置でいいよ。どうせ社会不適合者のクズだろうし。
801: 前方参照撲滅委員会 2014/08/26(火)23:56 ID:WIt2FEUm(2/2) AAS
>>797
> 後読みだと後方参照と似た印象受けるし、戻り読みの方が好き。
2chだと後方参照しか見ない気がするけど、
BackreferencesをMSは前方参照と略しちゃったりしてるんだよね
どう機械翻訳したら前方参照になるのかと小一時間(ry
外部リンク[aspx]:msdn.microsoft.com
外部リンク[aspx]:msdn.microsoft.com
802: 2014/08/27(水)00:00 ID:ca9UWwTQ(1) AAS
前へ(back)、次へ(next)
803(2): 2014/08/27(水)01:08 ID:LUqBHmJ8(1) AAS
普段意識しないけど「前」って表現は紛らわしい
「前に進め」と「前(の位置)に戻れ」は両方「前」だけど逆の向き
移動体に対する前後と移動の経路に対する前後は同じじゃない
文字列も、文字列の「後ろ」に向かって検査位置が「前進」するし
けど普通なら「前方」と書いたら移動体に対する「前」で、
検査位置(オートマトン)の進行方向(文字列の後ろ)を指す…よなぁ…
>>798-799
それだと書式指定飛び越えて置換ハンドラ作ってる気もするが、
その辺のこと言ってたって事…かなぁ…?誤解を招く表現だな
804: 2014/08/27(水)01:13 ID:bQc+U8zB(1) AAS
良いコード書きたかったら日本語なんて忘れろ
805: 2014/08/27(水)14:55 ID:Gkyyi0oW(1) AAS
>>803
これほんとそうだと思うわw
10年前、車の免許の卒検で「あの車の前に停まれ」っていうので前方だと思ったら手前だったらしく最後に怒られてイラッとしたわw
806(1): 2014/08/27(水)15:12 ID:sYB8gGv2(1) AAS
先読み=その文字列が先行していることを示す
戻り読み=その文字列の後に続くかを示す
なんかやってることは、先読みではなく後ろ読みな感じで、戻り読みは続き読みな感じがする
807(1): 2014/08/27(水)15:19 ID:/vEUt9tC(1) AAS
English is OK.
808: 2014/08/27(水)18:19 ID:Uo1g6O6r(1) AAS
(eigo de ok) is an English variant of 日本語でおk.
Just as "日本語でおk" conveys a request to comment in Japanese, ...
809: 2014/08/27(水)18:20 ID:nJZA/d8q(1/4) AAS
>>807
not english it is.
810: 2014/08/27(水)18:20 ID:WVBb8eJH(1) AAS
English is OKは
English === OK を意味する
811: 2014/08/27(水)18:23 ID:nJZA/d8q(2/4) AAS
”日本語でオーケー” → ”Speak in English”
812: 2014/08/27(水)18:24 ID:nJZA/d8q(3/4) AAS
× in English
○ in Japanese
813: 2014/08/27(水)18:27 ID:nJZA/d8q(4/4) AAS
そもそも訳わからんムズい説明とか専門用語ちりばめ解説にたいして
「このやろう、英語ではなせよな」
”hey, speak in English”
と。
そういう英語圏での話法が輸入されただろ。
どこかのバカが
「日本語でオーケー」
とか言い出してな。
あほか、日本語だろ!
てえめの国語力のなさに文句言え
ってのが大半だけどな
814: 2014/08/27(水)19:06 ID:TYjPELAM(1) AAS
>>806
先読み=戻り読みと勘違いしてない?
815(1): 2014/08/28(木)12:45 ID:pLtajWiU(1) AAS
前後というと文字の位置を連想しがちだけど時間軸(処理順序)の話なんだよな
816(1): 2014/08/28(木)18:21 ID:uZ9r61k2(1/2) AAS
>>815
時間「軸」だと、正負はあっても前後は無い気がするなぁ…原点は動かないし
文脈上の他の要素を介した間接的な前後になってしまいそうで怖いんだが
「時間的に前」「前に処理した」とか…普通に文字列の前後を指してしまわないか?
処理装置(カーソルでもオートマトンでもいい)の進行「方向」の前後で良いと思う
817(1): 2014/08/28(木)18:42 ID:tetCPUIB(1) AAS
時間の進行方向に対して「前」というと進行方向と逆の過去になり、「後」というと進行方向と同じ未来になる
「この前に行った場所に行こう」「この後に飲み屋に行こう」
移動の場合は「前」というと進行方向と同じ向きになり、「後」というと進行方向とは逆になる
「この道をまっすぐ前に進む」「びっくりして後ろに下がる」
文章の場合は読んでいく進行方向に対して、「前」というと進行方向の逆の既読位置で、「後」というと進行方向と同じの未読位置になる
書く場合でも「前」というと既に書かれた部分をしめし、「後」というとこれから書く部分のことになる
文章に対して前半・後半という表現もある
これは時間のケースと同じである
818(1): 2014/08/28(木)19:18 ID:XxtALw5X(1/2) AAS
>>816
前日とか、後日とか言わないか?
819: し 2014/08/28(木)19:22 ID:XxtALw5X(2/2) AAS
>>818
あるいは前後策とか
820(1): 2014/08/28(木)19:32 ID:uZ9r61k2(2/2) AAS
>>817
>「この前に行った場所に行こう」「この後に飲み屋に行こう」
こういうのって予定表上の前後っぽいニュアンスになっちゃうから、
これでホントに時間に対する前後の例になってるか悩むんだよね…
自分で書いといてアレだけど「前に処理した」も予定になりそうだし。
>「この道をまっすぐ前に進む」
「ここで前に戻る」は「前」なのに「戻って」しまうけど、どうするん?
「前方」と「方」をつけると文章でも(読み手の)進行方向になる気がするし、
>>803で出てるけど時間だの移動だので区分するんじゃなくて、
前後という表現が掛かる対象を見て区別したほうが良いと思う。
移動体に掛かるなら進行方向で良いけど、それ以外だと大抵逆方向になる。
821: 2014/08/28(木)19:35 ID:u81Xrccg(1) AAS
いつまでやってるんだよキモいなぁ
822: 2014/08/28(木)19:55 ID:Hg0+wwkG(1) AAS
ムーンウォークはどっち向きに歩いてるん?
823: 2014/08/28(木)20:40 ID:9FDOfLGs(1) AAS
>>820
>「ここで前に戻る」は「前」なのに「戻って」しまうけど、どうするん?
「ここで前に戻る」の「前」は時間経過の「前」だよ
824: 2014/08/28(木)21:26 ID:1RFDsZ4s(1) AAS
d
825: 2014/08/29(金)01:11 ID:4xakm/Il(1) AAS
前がゲシュタルト崩壊してきた。
826: 2014/08/29(金)05:02 ID:YWIzckej(1) AAS
後ろから前からどうぞ
827: 2014/08/29(金)15:32 ID:XeSPYyFB(1) AAS
↓ホモ3連装の岐阜
828: 2014/08/29(金)17:09 ID:FliA9TBF(1) AAS
お前初めてかここは、力抜けよ
829: 2014/08/29(金)18:17 ID:BbDu6wB2(1) AAS
岐阜県民に何の恨みがあるんだお前
830(1): 2014/08/29(金)21:17 ID:ZQUCiV5V(1) AAS
ルーターのログファイルからIPアドレスだけ取り出したいのですが、
さくらエディタにログファイルを張り付けて置換コマンドで
IPアドレスのみ残して他の文字は全部除去出来ますか?
検索なら
(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})
で出来たのですが、これを残して他の文字を削除するというのが出来ませんでした。
条件としては
さくらエディタ(Win7)
テキストファイル
各行に IPアドレスがいろいろ含まれている。
XXX.XXX.XXX.XXX つまりこんな感じ。
その前後には , 空白 タブ ( ) CRLF などがある。
831: 2014/08/29(金)22:19 ID:NX9Ew2LD(1/2) AAS
>>830
検索
([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})
置換
$1\n
832: 2014/08/29(金)22:28 ID:NX9Ew2LD(2/2) AAS
あ、間違えた
検索
(?s-m).*([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}).*
置換
$1\n
833: 2014/08/30(土)00:37 ID:3Iv0NAQx(1/3) AAS
サクラエディタは行をまたげないのでmオプションは効かなかったかと。
検索:\G.*?(((?<=\G|[^\d\.])(\d{1,3}\.){3}\d{1,3}(?=$|[^\d\.]))((?!\g<2>).)*|((?!\g<2>).)*$)(\r?\n?)
置換:,$2$6
区切り文字も消すと見づらいので,つけたけど、消すだけなら(\r?\n?)を外して$2に置換で良い。
$6カッコ悪いし、IPアドレス無いときのマッチが邪魔だわ…上手い人はどう書くんだろう?
834(1): 2014/08/30(土)00:45 ID:YmGD3eGR(1) AAS
サクラエディタのあの仕様はマジで勘弁して欲しい
愚痴スマソ
835(1): 2014/08/30(土)00:56 ID:Gk/RrE5v(1) AAS
さくらエディタは、mオプションがデフォルトでON
836: 2014/08/30(土)01:32 ID:3Iv0NAQx(2/3) AAS
.*?が怖かったから修正、ついでに0〜255までの値にのみマッチするように修正
検索:((?!((?<=\G|[^\d\.])((1?\d?\d|2[1-4]\d|25[1-5])\.){3}\g<4>(?=$|[^\d\.]))).)*(\g<2>)?\g<1>*(?=$|\g<2>)(\r?\n?)
置換:<$5>$6
先読み等のアンカー集合内での捕獲式集合は番号指定参照などに制限があるけど、
部分式呼出しなら(当然だけど)自由に再利用できるんだねぇ…$1〜$4が先読みを捕獲してる辺含めてなんかキモい。
>>834
だね。お陰でWSH/JScriptのreplaceが大活躍だけど、鬼車拡張使いたい時はどうにもならん…
>>835
けれど行ごとに処理するから殆ど意味がないっていう話。$とかはサクラエディタ自身が検索用の正規表現弄るらしいし。
837(1): 2014/08/30(土)02:07 ID:6GRP07Vc(1) AAS
皆さんありがとうございました。
836さん方式で完璧に取り出すことが出来ました。
正規表現初心者の私には殆ど理解できない式です。よくこんな物凄い式が書けますね。
なお、私の提示した条件に
IPアドレスが無い行もある
って入れ忘れていました。
今回作ってもらった表現式ですと、この行は <> に変換されました。
もし簡単に変更できるなら、IPアドレスの無い行は除去する式に変更して頂けると嬉しいです。
(せっかく作ってもらって文句言うようで申し訳ありませんが。。。)
838: 2014/08/30(土)03:03 ID:3Iv0NAQx(3/3) AAS
>>837
やっぱIPアドレス無いときのマッチは邪魔だよねぇ…
区切り文字を含んだ置換文を、IPアドレスの存在しない行の置換にも流用した弊害です。
置換文を$5にすればゴミは消えるが区切りも消えるし、$5$6とかだと空行が残ってしまう。
二度目の置換で<>を削除するのが一番きれいに置換できる…と思ったのでああなった。
元々存在する区切り文字を流用することは出来る。(\g<1>?をIPアドレスと一緒に捕獲して置換文を$5$6や$5にする)
検索:((?!((?<=\G|[^\d\.])((1?\d?\d|2[1-4]\d|25[1-5])\.){3}\g<4>(?=$|[^\d\.]))).)*(\g<2>\g<1>?)?\g<1>*(?=$|\g<2>)(\r?\n?)
ただ、区切り文字の表記ゆれがそのまま出力に反映されて、文章中に存在するIPアドレスとかが哀しいことに
「8.8.8.8とはGoogleのDNSサービスです。0.0.0.0は無効なアドレスや特殊なアドレスを意味します」→「8.8.8.8と0.0.0.0は」
839: 2014/08/30(土)20:38 ID:v0qXwKg4(1) AAS
dj
840: 2014/08/31(日)02:37 ID:IR2UIS8T(1) AAS
あ、2[1-4]\d|25[1-5]じゃなくて2[0-4]\d|25[0-5]じゃないとだめじゃんコレ。誰か突っ込んでよ…
841(2): 馬鹿1号 2014/09/01(月)20:29 ID:63998s3t(1) AAS
だいぶ前に、C#でWindows用に正規表現練習ツールを作って
ソースとexeのアップロードを以下のアドレスに上げたのですが
外部リンク:sourceforge.jp
どなたか、使ってみて
改良点があれば教えて下さい。
最近、Androidアプリばかり作っているので
ひさびさ、C#も触っとこうと思ってる次第です。
842: 2014/09/01(月)20:41 ID:2GXB3w06(1) AAS
へぇ
svn使わなくてzipでソース配布でもSouceForge.JPでプロジェクト作ってもいいんだな
知らなかったわ
843(1): 2014/09/02(火)00:19 ID:6ckoH3d5(1) AAS
>>841
Support Textをパクってください〜
Windows版とAndroid版が欲しい///
正規表現を連続実行できるテキストエディタお願いしますー!
844: 2014/09/02(火)00:20 ID:LHXA0qlA(1) AAS
web上で出来るからなぁ、web上でも凝った作りのものもあるけど>>512とかで十分。
それより正規表現は方言がいろいろあるからどの方言かくらいは書いといたほうがいいと思う。
845: 2014/09/02(火)01:01 ID:1/i9nKxD(1) AAS
>>843
SupportTextって1MBくらいのテキスト扱える?
846: 2014/09/02(火)14:54 ID:1Vq/ncad(1) AAS
メアドとユーザー名とパスワードを
メアド……(.+)@gmail.com
ユーザー名……\1.+
パスワード…….+\1
って風に部分的に使い回すのってセキュリティ的にまずいかね
847: 2014/09/02(火)15:11 ID:O4BThnl4(1) AAS
質問する場所間違ってるぞ
848: 2014/09/04(木)00:48 ID:+sF4QUe9(1/2) AAS
数を数える箇所で洋数字をひい、ふう、みい、よう、いつ、むう、なな、やあ、ここ、とおと置換させたいのですが、どうしたら良いでしょうか。
時間や番号は通常のままです。
SAPI5読上げ用にVBScript.RegExpで使うことを考えています。
849: 2014/09/04(木)00:54 ID:6btE19Xl(1) AAS
数を数える箇所、の定義を明示しろ
あと、一回の正規表現で
A ⇒ A'
B ⇒ B'
...
のように置換することは不可能
850: 2014/09/04(木)01:52 ID:Ks0RyVTt(1) AAS
同じWSHでJScriptのString.replaceならreplaceTextに関数指定すれば正規表現の適用回数は一回で行けるかもね。
VBScriptだと複数回RegExp.Replace置換するかRegExp.Executeしてループ内で変更してくか…どっちにしても面倒。
851: 2014/09/04(木)22:06 ID:+sF4QUe9(2/2) AAS
レスありがとうございました。
やはり結構メンドくさそうなのですね。
定義もまだちゃんと定まっていないので出直します。
852: 2014/09/04(木)22:45 ID:U17zlyiG(1) AAS
正規表現を使わなくても出来るよね。正規表現が分からないなら別の方法でやればいいだけの話。
853: 2014/09/04(木)22:51 ID:4HghpGpo(1) AAS
むしろ、正規表現でしか出来ないことなんてない件
854: 2014/09/05(金)01:48 ID:LrK9xOye(1) AAS
正規表現しか使えない状況ってのはたまにあるけど
最低限の処理以外は、出来れば遠慮したい
855: 2014/09/05(金)02:51 ID:wkXRWLH9(1) AAS
正規表現使わない方が速い場合が多いからね。
856: 2014/09/05(金)02:55 ID:wDfAxYZ7(1) AAS
書いてる時はいいけど半年くらい後に読むと
何をしようとしているのかすぐには思い出せない
857: 2014/09/05(金)12:30 ID:K3KOceOQ(1) AAS
なんとかtool使ってるからコメント付きで保存してる。保存してもまたいじるってことが滅多にないけどね。
858: 2014/09/06(土)19:48 ID:Bwavr3lm(1) AAS
>>841
適当な例題と回答の一例みたいなのが欲しい
859(2): 2014/09/09(火)03:50 ID:3/iFB8Vu(1) AAS
2chのVIPのIDかどうかを正規表現で調べたいのですが
IDが0-9a-zA-Z+/の64個の文字の9桁で出来ています
これを
/^[a-zA-Z0-9\+\/]{9}?$/
で正規表現を作ってみたのですが
IDに+が入った時にマッチしません
+も[]にエスケープして入れているのに
何故なんでしょうか?
PHPでやっています
860(2): 2014/09/09(火)06:39 ID:hQhjEIGx(1) AAS
>>859
PHPぼ正規表現文法は知らないけど、
+や/をそれぞれ\x2Bとか\u002fとかのコードポイント指定にしても駄目?
(+の問題以前に正規表現パターンの引用符/をバックスラッシュでエスケープできてるのかが疑問)
861: 2014/09/09(火)07:14 ID:9n77QlVw(1/2) AAS
>>860
文字集合内では量指定子や正規表現リテラルのデリミタ文字はエスケープ省略できる事が多いけど駄目なんかね?
862(2): 2014/09/09(火)09:17 ID:rLIm4nxe(1/3) AAS
>>859
再現する最小限のコードを書け。他のところが間違っているのだろう
$ php -r 'print preg_match("!^[a-zA-Z0-9+/]{9}$!","12345678+");'
1
書けたら質問も不要になってそうだが報告は必要。
863(3): 2014/09/09(火)10:35 ID:GI4rgDDA(1) AAS
>>860
ダメでした
>>862
if(isset($_GET['id'])) {
$id = $_GET['id'];
if(preg_match('/^[a-zA-Z0-9\+\/]{9}?$/', $id)){
echo "IDです<BR>";
}else{
echo "not ID<BR>";
exit(-1);
}
}
が最小限のコードです。
と、書きつつ他の原因を調べてたところ
GETからIDを取ってるところが怪しいようです。
$idを表示させたらちゃんとIDが表示されるのですが
preg_matchではちゃんと機能してくれません。
文字列リテラルで直接ソースにIDを書き込んだら
preg_matchがちゃんと機能してくれました。
正規表現とは別の問題っぽいので
質問は取り下げさせて頂きます。
みなさまありがとうございました。
864: 2014/09/09(火)10:59 ID:rLIm4nxe(2/3) AAS
>>863
+がエスケープされて%2bとかされてるんじゃないの。
865: 2014/09/09(火)12:34 ID:7s/ClwS2(1) AAS
>>863
文字列のエスケープとかぶってるだけじゃねーの?
外部リンク[php]:php.net
866: 2014/09/09(火)12:41 ID:Yqht+GIw(1) AAS
>>863
URLエンコードについてググレ
867: 2014/09/09(火)16:59 ID:9n77QlVw(2/2) AAS
php…にかぎらないけど(特にWebアプリケーションでは)、文字列のエスケープに
十分注意しないと巨大なセキュリティホールこさえて死ぬからちゃんと勉強しとけよー
868: 2014/09/09(火)17:54 ID:3/omhs4l(1) AAS
\が原因だと思います。どうしてそこで\するのか
869: 2014/09/09(火)17:58 ID:pzDyfk+k(1) AAS
ぺちぱーは隔離板あるんだからこっちくんな
870(1): 2014/09/09(火)18:00 ID:+h+xKEPP(1/2) AAS
エスケープはいるだろ。基本、しなくていい文字でやっても無視されるので、余分にしてもいい。
PHPの''と""の違いでは?
囲いを、""にしたらどうだ。
871: 2014/09/09(火)18:04 ID:+h+xKEPP(2/2) AAS
PHPにおけるシングルクォーテーションとダブルクォーテーションの違い - Qiita
外部リンク:qiita.com
シングルクォーテーションとダブルクォーテーションの違いで詰まった。
外部リンク:qiita.com を参考にした、改行コードを統一するコード
$tmp = preg_replace("/\r\n|\r|\n/",'\n', $hogehoge);
$tmp = preg_replace("/\r\n|\r|\n/","\n", $hogehoge);
どのように挙動が異なるかは上のコードと以下を続けて試してみれば良い。
クォーテーションを統一しないと、意図したとおりの挙動を示さない。
というのも、シングルかダブルかによって、\nを改行として扱うかが変わるからだ。
ダブルはシングルより多くの文字を、エスケープして扱う。
外部リンク[php]:www.php.net を見れば何がエスケープされるか分かる。
変数の展開だけがクォーテーションの違いではないという教訓です。
872: 2014/09/09(火)18:56 ID:rLIm4nxe(3/3) AAS
>>870
>>862がダブルクォート使ったのはコマンドラインだからで、基本的にはシングル使う。ダブルは改行くらいか。
873: 2014/09/10(水)07:51 ID:T8BC/FY4(1) AAS
>>738
>>740
>>747
返事おそくなってすいません
どうもありがとうございました
874(3): 2014/09/10(水)22:01 ID:TE4FFqo+(1) AAS
●Regular Expressionの使用環境
Perl
●検索か置換か?
置換
●説明
「"」で囲まれた文字列以外のスペースを置換したい
●対象データ
a b c "d e f" g h "i j k" l m
●希望する結果
a,b,c,"d e f",g,h"i j k",l,m
よろしくおねがいします
875(1): 2014/09/10(水)23:02 ID:F+zfATH5(1) AAS
>>874
外部リンク:ideone.com
876(3): 2014/09/10(水)23:51 ID:ck0DKWEV(1) AAS
" のエスケープは考えなくてもいいのか?ちなみにこれは1つの正規表現で置換可能。
877: 2014/09/11(木)00:03 ID:ItD6Xlgu(1/2) AAS
>>876
ぜひ回答をお願いします
俺の正規表現力ではわからなかった
878: 874 2014/09/11(木)00:25 ID:O797lH9A(1/2) AAS
>>875
ありがとうございます 助かりました
>>876
わたしからも回答ぜひおねがいします
879(6): 2014/09/11(木)01:52 ID:RIJn46pc(1) AAS
876じゃないが
\ (?=([^"]*"[^"]*")*[^"]*$)
でいけるかな
880: 876 2014/09/11(木)14:32 ID:aG4exxJA(1) AAS
\Gを使えば出来るという意味で書いたけど>>879のほうが秀逸だった。
881: 2014/09/11(木)15:07 ID:ItD6Xlgu(2/2) AAS
勉強になりました
882: 874 2014/09/11(木)20:04 ID:O797lH9A(2/2) AAS
>>879
ありがとうございました
883(1): 2014/09/12(金)01:46 ID:RnFNDXF7(1/2) AAS
>>879
凄いな…全然解らない…orz
884(2): 2014/09/12(金)03:57 ID:RnFNDXF7(2/2) AAS
>>879
\ (?=([^"]*"[^"]*"[^"]*)*$)
これで出来て
$を無くすと出来ない…
先読みの中に$を入れると…
なぜ否定先読みみたいに動作してるのだろう…う〜む
885(2): 879 2014/09/12(金)05:21 ID:lGY9wDxG(1/2) AAS
>>883-884
([^"]*"[^"]*")*[^"]* の部分は、
[^"]* →「" が0回出現する文字列」
[^"]*"[^"]*"[^"]* → 「" が2回出現する文字列」
[^"]*"[^"]*"[^"]*"[^"]*"[^"]* → 「" が4回出現する文字列」
[^"]*"[^"]*"[^"]*"[^"]*"[^"]*"[^"]*"[^"]* → 「" が6回出現する文字列」
……
の全てにマッチ、つまり「" が偶数回出現する文字列」にマッチする。
\ (?=([^"]*"[^"]*")*[^"]*$) 全体では、「自身の直後から行末までに " が偶数回出現するスペース」にマッチすることになる。
$を抜くと、行末まで読まずに " が偶数回出現した時点でマッチしてしまう。
空文字列も「" が0回出現する文字列」なので、先読みの中身が空文字列にマッチしてしまい、
\ (?=([^"]*"[^"]*")*[^"]*) 全体では「空文字列が後続するスペース」、すなわち全てのスペースにマッチしてしまうことになる。
886(2): 879 2014/09/12(金)07:35 ID:lGY9wDxG(2/2) AAS
嘘言った。最長マッチだから空文字列にマッチするわけじゃなくて「" を偶数個含む最長の文字列」にマッチだ。
だから右に " が偶数個あったら行末までマッチするし、奇数個あったら「最後の " の手前」までにマッチする。
いずれにせよ \ (?=([^"]*"[^"]*")*[^"]*) が全てのスペースにマッチするのは変わらない。
887(1): 2014/09/12(金)08:07 ID:9em7Blpz(1) AAS
>>884-886
「$が無いと、最悪0文字でも成立する先読みになってしまってアンカーとしての効果がなくなる」
てだけで良いんでは?
888(1): 2014/09/12(金)08:54 ID:z7VCF1w0(1) AAS
正規表現覚えようと思ってこのスレ開いたけど
自信なくすわ…
889: 2014/09/12(金)14:41 ID:9mhn+6ow(1/2) AAS
初心者用のサイトがなかなかないのがなぁ。
大抵のサイトがメタ文字の働きを紹介して終わり。
890: 2014/09/12(金)16:09 ID:oxD6azvx(1) AAS
それが初心者レベルだろ
そっから先はたんに頭良いか否かの問題
891: 2014/09/12(金)16:17 ID:9mhn+6ow(2/2) AAS
読んだ初心者は
「・・で?」
ってなると思う。
892: 2014/09/12(金)16:19 ID:LxISYSrD(1) AAS
やりたいことがあったら……で?ってことにはならんだろ
なんで正規表現調べたんだよ
893: 2014/09/12(金)17:11 ID:N0Ak2k0g(1) AAS
使い方の例載せてるとこ見れば済む話だわな
ものがどれほど使いこなせるかは工夫というかなんというか
894: 2014/09/12(金)18:09 ID:SdpEoEyB(1) AAS
>>885-886
>>887
なるほど
今まで、上のような正規表現を書いてもアンカーとして効果が得られず悩んだことがありました。勉強になります
\ (?=("[^"]*"[^"]*)*$)
こうすることで、なるほど〜!と思いました
こういう使い方もあるんですね
使い方のサイト見て、改良するのが一般的かと思う
なかなか見つからないけど
895: 2014/09/12(金)21:48 ID:m9C6tOaw(1/2) AAS
>>888
エロ画像集めるスクレイピングやってりゃすぐ覚えるよ
896: 2014/09/12(金)21:49 ID:m9C6tOaw(2/2) AAS
ID:m9C6tOaw m9(^Д^)プギャー
897: 2014/09/12(金)22:07 ID:Qq2j8Y7Z(1) AAS
だーれが殺したクックロビン♪
898(2): 2014/09/18(木)06:28 ID:LuX8mYFM(1/4) AAS
AA省
899(1): 2014/09/18(木)06:39 ID:LuX8mYFM(2/4) AAS
4 「冬」という「季節」の次は「春」 結果:検出 (「冬」 & 「季節」 | 「季節」 & 「春」)
900: 2014/09/18(木)06:41 ID:LuX8mYFM(3/4) AAS
質問が2レス( >>898-899 )になり見苦しくなりましたが回答お願いします。
901(1): 2014/09/18(木)08:43 ID:sZWThT0L(1) AAS
^(?=.*(?:春|冬))(?=.*(?:季節|まだ寒い|もうすぐ|今は))
902(1): 2014/09/18(木)12:32 ID:WwOS0T/f(1) AAS
「これでOKです。ありがとうございました。ところで、(?=...)はどういう意味になるのですか?」禁止
903: 898 2014/09/18(木)15:16 ID:LuX8mYFM(4/4) AAS
>>901
ありがとおおおおおお。希望どおりです!
非常に助かります。ありがとうございます!!
>>902
(?=...) ←お察しの通り勉強不足で・・・。勉強してみますm(_ _)m
904: 2014/09/18(木)15:42 ID:FXleOK+M(1/2) AAS
顔文字とか正規表現に見えてくるからやめてくれ
905(1): 2014/09/18(木)15:54 ID:FM/QfY4S(1) AAS
何が顔文字とか正規表現に見えてくるの?
906: 2014/09/18(木)16:10 ID:qcbUbYW3(1) AAS
>顔文字とか正規表現に見えてくるからやめてくれ
重度の正規表現マニアだなw
907: 2014/09/18(木)16:22 ID:KJB3BXRm(1) AAS
たとえばあそこを歩いてる幼稚園帰りの子供とお母さん
たとえば街路樹似くっついてる蝉の抜け殻
たとえばおやじのカツラ
908: 2014/09/18(木)17:43 ID:FXleOK+M(2/2) AAS
>>905
顔文字とかは、
909: 2014/09/19(金)21:00 ID:Ncueq+Ud(1) AAS
顔文字全体の集合と正規表現全体の集合は一致する!
910(2): 2014/09/19(金)23:08 ID:8Zoa03M9(1) AAS
●Regular Expressionの使用環境
2ちゃんねる専ブラ JaneView (JaneStyle JaneXsonでも可)
●検索か置換か?
検索
●説明
先ず以下のURL先を読んで下さい。
2chスレ:software
2chスレ:software
行末に「・」がひとつあるレスをNG機能であぼーんしたいのですが
テキストへの保存の仕様の関係でうまく行きません。
これを正規表現で対応できませんか?
[^ぁ-んァ-ヶーa-zA-Z0-9一-龠0-9、。\(\)\[\]]こんな風に文字と記号の範囲を設定しまくりつつも
文字コード 0xFCFC だけを除外する正規表現で。
●対象データ
2chスレ:rail (リンク先)
●希望する結果
2ch専ブラJaneView (JaneStyle JaneXson)のNG機能を使って
2chスレ:rail (リンク先) をあぼーんにする
911(2): 2014/09/20(土)00:47 ID:bsposVaG(1/3) AAS
>>910
そのスレの888だけど、その後
\xFC\xFC ?(<br>|$)
でJane Styleだとあぼーんできた
でも、wsh(jscript)だとダメだし
\uFCFCや\xFC+や\xFC{2}ではダメなので
\xFCFCを1文字と認識してて\xFC\xFCと書いたときだけ1文字扱いしてくれるのかも
知れないが実際のところは何故なのか分からないので何か問題があるかもしれない
912: 910 2014/09/20(土)01:12 ID:5nF3s35L(1) AAS
>>911
向こうのスレでも大変お世話になりました。
他スレや他サイトの文章のコピペで荒らす荒らしが住み着いていまして、
「・」入りのレスは全て荒らし目的の他スレからのコピペなんですよ。
ですから「・」入りのレスをNG登録したくこのスレで質問させていただきました。
>\xFC\xFC ?(<br>|$) でJane Styleだとあぼーんできた
確認しました。綺麗にNG処理できますね。驚きました。
おかげで自分と多くのスレの住人が助かります。ありがとうございました。
913(1): 2014/09/20(土)01:24 ID:47FzG9Ds(1/2) AAS
>>911
\x{FCFC} は?
914: 2014/09/20(土)01:28 ID:bsposVaG(2/3) AAS
\xFC\xFC ?(?:<br>|$)
とした方がキモチ速いかも知れない
ちゃんとした知識を持った人の解説があれば良いんだけどね
915(2): 2014/09/20(土)01:33 ID:bsposVaG(3/3) AAS
>>913
そういう記述法があったんだね
でもWSHではサポートしてないようだ
ところで\xFC\xFCでマッチする理由を知ってたら教えて欲しい
916: 2014/09/20(土)01:49 ID:47FzG9Ds(2/2) AAS
>>915
WSHは知らんが、bregonig.dll(鬼車・鬼雲)は \xHH を並べて1つのマルチバイト文字を表すことができる。
なので \xFC\xFC で1文字の扱い。
917: 2014/09/20(土)09:47 ID:R1d15TF4(1) AAS
皆それぞれ詳しいな。2ちゃんねるの英知がこのスレに集結って感じだ
918: 2014/09/20(土)09:51 ID:p579UTgt(1) AAS
英知出版
919: 2014/09/20(土)12:49 ID:MmqRSgkh(1) AAS
ええ乳と聞いて
920: 2014/09/20(土)17:31 ID:u2EjBJUk(1) AAS
英知w
暇なオッサンが気まぐれにパズル問題解いてるだけだろ
俺も含め
921: 2014/09/20(土)21:50 ID:en7FecTi(1) AAS
>>915
WSH(JScript)だとそもそもUnicodeだから色々と事情が違うのだけど、
U+0000〜U+00FFの範囲の文字なら普通に\xXXの表記も使えるよ。
「"\u00FC\u00FC".match(/\xFC\xFC/)?"match":"mismatch"」→「match」
ShiftJISの2バイト文字は基本的にUTF-16の1文字だと考えていい。
0xFC 0xFCがUTF-16でどの文字に変換されてるかが分かってれば、
変換後の文字がU+30FBなら\u30FBみたいな方法で指定出来るよ。
WSH上の文字列に変換する方法でどの文字になるか変わると思うから、
具体的に\uXXXXで幾つを指定したらShiftJISのFCFCになるかは知らん。
StdInやScripting.FileSystemObjectのOpenTextFileだとU+30FBだった。
FCFCじゃなくて8145もU+30FBに変換されてしまうから区別はできないね。
922(1): 2014/09/24(水)16:21 ID:OftfFmTf(1) AAS
●Regular Expressionの使用環境→perl v5.8.8
●検索か置換か?→置換
●説明
下記のような文字列があって、ここから入れ子が許された#ITEM〜#ENDを削除して残りを抽出するということをしたいです。
my $str = <<EOF;
aaa
#comment a
#ITEM
bbb
#ITEM
ccc
#END
ddd
#END
#comment b
eee
#ITEM
fff
#END
ggg
EOF
●希望する結果
aaa
#comment a
#comment b
eee
ggg
●その他
下記のように入れ子の内側から消していけば出来そうではありますが、「#ITEM以外の文字」という部分が思いつきません。
1 while $str =~ s/#ITEM(#ITEM以外の文字)*#END//s;
どのような正規表現にすれば実現できますでしょうか?
923(1): 2014/09/24(水)19:52 ID:7Z8OfgNc(1) AAS
>>922
我ながらあまり良くない気がするけど、
/#ITEM(?:\n|(?!#ITEM\n).)*?#END\n/
924: 2014/09/25(木)00:34 ID:YzpFJPYr(1) AAS
そういうのは素直に
ITEMかEND見つける
ITEMが見つかったらスタックにPUSH
ENDが見つかったらスタックの最後からITEMをPOPしてITEM~END処理
ってやる
上下前次1-新書関写板覧索設栞歴
あと 77 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.037s