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