[過去ログ] Regular Expression(正規表現) Part14 [無断転載禁止]©2ch.net (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
162: 2017/06/02(金)00:26 ID:ixZw1vso(1) AAS
perlがそうであったようにログ読んだり整形したりするときにも良く使う。システム管理者。
プログラマによっては無理に正規表現使わないで正規表現を引数に取らないcontainとか複数行で書くって人もいるんじゃないか。入力チェックもそんな考えるような正規表現の出番少ないような。
perlくらい言語に組み込まれてるならともかく。
163: 2017/06/02(金)01:15 ID:ZbzhojDH(1) AAS
>>156
ヘンケン艦長〜!
164: 2017/06/02(金)14:02 ID:s9L+1vWi(1) AAS
正規表現、難しいですね…全然わかりません
お知恵をおかし下さい

例えば

test = "//abc"; // コメント "です"

という一行があった場合、後半の

// コメント "です"
省9
165
(2): 2017/06/02(金)14:24 ID:zHTMhHhl(1) AAS
//((?!//).)*?$
166
(1): 2017/06/02(金)20:31 ID:KFrvDlYH(1) AAS
PHP は知らん

$perl -ne 'm%((?:\".*?\"|/(?!/)|[^/])*)(.*)% ; printf("<$1> <$2>\n");'
test = "//abc"; // コメント "です"
<test = "//abc"; > <// コメント "です">
// コメント "です"
<> <// コメント "です">
$
167
(1): 2017/06/02(金)21:10 ID:yyLeCvfJ(1) AAS
末尾方向から、// を探して、もしあれば、その行を選択する。
^.*\/\/(ここに、2連続以上の、/ が存在しない)$

/// 例えば、3連続でも、コメント扱いするよな?
test = "///abc"; /// コメント "です"

シングルクォーテーションは、どうするんだ?
test = '///abc'; /// コメント "です"
168
(1): 2017/06/02(金)23:18 ID:cODXM6Ca(1) AAS
javascriptだから、シングルダブルは同等機能
"'"とか'"'とか有だし
"\""とかのエスケープもある
"//abc"は文字列だし、"\""//abc"はコメント
169
(2): 2017/06/03(土)00:22 ID:02UJhjHA(1/3) AAS
みなさん、ありがとう御座います!
165さんの短いのでサクっと出来ました!

なるほど、末尾から検索をかけるとう考えなんですね。

本当に奥が深くて、使いこなすのは難しいです…

いろんなパターンを作りだし、自由にマッチ出来るよう精進します

>165-167さん、ありがとう御座いました!
170: 2017/06/03(土)00:23 ID:02UJhjHA(2/3) AAS
>168さん抜けちゃいました(汗
ありがとう御座いました!
171
(1): 165 2017/06/03(土)01:16 ID:janVI+9u(1) AAS
>>169
ツッコミか逆ギレ待ちだったんだが…
165ではコメントが無くてコード中に//がある場合にそのコードの部分にマッチする
削除だとコードを削ってしまうよ
コード中に//が無い場合、またはコード中に//がある場合にその後ろにコメント行がある場合、限定
マトモなのは「JS コメント 正規表現」とかのワードでggr
172: 2017/06/03(土)01:49 ID:VDeCcObx(1) AAS
s#((?:"(?:\\\\|\\"|[^"])*+"|'(?:\\\\|\\'|[^'])*+'|/(?!/)|[^/])*+)(.*)#<$1>\t<$2>#
173: 2017/06/03(土)02:57 ID:02UJhjHA(3/3) AAS
>>171
え!?
限定的なテストで、思ったとおりの動きをしたので、おお!すげー!って思ってました…

実際のスクリプトには、まだ組み込んでないので気付きませんでした

他の方が書かれてた方法も試したり、ググってみますね
174: 2017/06/03(土)04:51 ID:ZUxfcpWv(1) AAS
区切り記号 ; や閉じ括弧 } のあとにスペースかタブいくつかの後に来る // から行末をコメントと見なすのが簡単?
175: 2017/06/03(土)12:52 ID:7vig672V(1/3) AAS
コメント化は、プログラムデバッグ中にも命令を無効にするために使うこともあるし、ことはそう簡単じゃないよ
//if(hoge=="外部リンク:hoge.net") {//コメント
176: 2017/06/03(土)14:13 ID:ep62Y9tf(1) AAS
これは、無限の組み合わせがあるから、正規表現じゃ無理

AST変換とか、LLVMでコンパイル後の命令木をもらって、
コメント部分を削除するとかしないと、自力じゃ無理なレベル
177: 2017/06/03(土)14:17 ID:sCohk93m(1) AAS
うむ
178: 2017/06/03(土)14:32 ID:7vig672V(2/3) AAS
こんな場合もあるからね
/* 一行コメントを外す
//*/hoge="abc";
179: 2017/06/03(土)14:42 ID:mWYP1opd(1) AAS
文脈自由言語の領域か
180: 2017/06/03(土)16:26 ID:kz1iKZuq(1) AAS
テキストから
06/03(
を抽出する場合、どんな表現になりますか?
181
(1): 2017/06/03(土)16:32 ID:7vig672V(3/3) AAS
何それ限定なの?
06\/03\(
(スラッシュにエスケープが要らない場合もあるけど付けといてダメなことはない)
182: 2017/06/03(土)20:14 ID:4NkabvDw(1) AAS
>>181
sedのsなんかは(をエスケープすると特別な意味を持つんじゃ
183
(1): 2017/06/03(土)22:49 ID:yEDWU2+/(1) AAS
正規表現って本当に色々なパターンでテストしないと抜けがあったりするから怖いね
184
(1): 2017/06/03(土)23:15 ID:eiMrU4PF(1) AAS
>>183
それは仕様を理解していないから。
正規表現で表現してあるパターン以外にマッチする事はないんだから、
抜けがあるならパターンの意味を理解していないって事
185: 2017/06/04(日)00:01 ID:caz8ZVsN(1) AAS
理解してないのに使う方が怖い
186: 2017/06/04(日)10:21 ID:ty2rLUEJ(1) AAS
>>184
仕様を理解してたらバグがないって? w
187
(1): 2017/06/05(月)17:11 ID:oWlVC1QB(1) AAS
非欲張り、欲張り、強欲の違いが分からなかったんだけど
外部リンク:d.hatena.ne.jp
これ読んでやっと分かった
こりゃエディタの検索で試してるだけじゃ理解出来なくて当然だね

誰か同じように例を交えて先読みと戻り読みのロジックを解説して欲しい
それか解説してるwebページがあるならリンク貼って下さい
188: 2017/06/09(金)23:50 ID:fJoQB/gQ(1) AAS
●Regular Expressionの使用環境
秀丸 HMJRE.DLL V5.00
●検索か置換か?
置換
●説明
文章最後の文字からEOFまでの 空白(全角半角両方) タブ 改行 を消したい。
●対象データ
AAAAA

BBBBB

CCCCC
省6
189: 2017/06/10(土)10:49 ID:qGbgn0XY(1) AAS
外部リンク[html]:htom.in.coocan.jp
190: 2017/06/10(土)12:37 ID:6tXlKKLu(1) AAS
[ \s]*(?!\n)$(?#maxlines:99999999)
191
(1): 2017/06/12(月)04:37 ID:40WtKqR9(1) AAS
>>187
Qiitaなのでコメントまで必ず読むこと

正規表現の先読み/後読みを「絞り込み」と理解してみる - Qiita
外部リンク:qiita.com

[コラム] 正規表現の先読み/後読みは、どう考えても名前が悪いので、呼称禁止令を出してルックと気軽に呼んでみませんか。 - Qiita
外部リンク:qiita.com

後者は日本語表現のネタモノなので理解にはあまり役に立ちませんが
192: 2017/06/12(月)04:43 ID:3uouTe/z(1) AAS
>>191
ありがとう。読んでみます
193
(1): 2017/06/15(木)14:44 ID:p0Tdw73d(1) AAS
そもそも「正規表現」が誤訳だし
「先読み/後読み」がどうだって驚かない
194: 2017/06/15(木)17:11 ID:vJds0eqB(1) AAS
名前なのに誤訳ってなんだよ
195: 2017/06/15(木)20:46 ID:am9DsefU(1) AAS
「正規表現」が誤訳!!www
196: 2017/06/15(木)21:53 ID:5Ry9SVFq(1) AAS
前厄,翻訳,後厄
197: 2017/06/15(木)23:55 ID:kDv/IOKj(1) AAS
非正規労働者に謝れ
198
(1): 2017/06/16(金)00:00 ID:AvJwaQP1(1) AAS
>>193
そんな感じがする
でも定着して何十年経過したからいまさら変更できない

直訳すると正則記法?
199: 2017/06/16(金)00:03 ID:ugmLNmLC(1/2) AAS
まさのりって誰よ?
200: 2017/06/16(金)00:09 ID:7387anCt(1) AAS
>>198
数学用語で考えると、「正則式」
201: 2017/06/16(金)00:28 ID:CHM/yJyC(1) AAS
誤訳にしたくて必死過ぎw
202: 2017/06/16(金)00:34 ID:PEuGYK32(1) AAS
確かに数学的にはregularは正則でnormalが正規だけども
正規表現が正則式だの正則表現になったからといって何が分かりやすくなるでもなし
203: 2017/06/16(金)01:26 ID:1cZCMNBu(1) AAS
ID変わった時間に擁護
204: 2017/06/16(金)03:20 ID:cmFh/xD2(1) AAS
英語圏の人たちにとってもRegular Expressionと言われて
[ \s]* みたいなことか〜て思い浮かぶわけでもなかろ
単に「それを何と呼ぶか」つまり名前付けをどうするってだけのことだよ

ただ日本では(2chだけかもしれないけど)性器表現とか茶々入れる奴がいるのが面倒くさい
205: 2017/06/16(金)06:44 ID:HukDnr5k(1/2) AAS
2chに限らずゲスな一般大衆の猿共は真っ先に性器と捉える
正規よりかは正則の方が良かっただろうけど
若い女の子へのセクハラに使えるから正規も捨て難い
まあ今時「せいき」の言葉にモジモジする女子なんて希少だが居なくは無い
206: 2017/06/16(金)12:48 ID:dHQ1DtF8(1) AAS
くっさ
207
(1): 2017/06/16(金)13:01 ID:KyUpje1a(1) AAS
正規表現で置換
208: 2017/06/16(金)16:51 ID:ugmLNmLC(2/2) AAS
>>207
通報した
209
(1): 2017/06/16(金)17:21 ID:HukDnr5k(2/2) AAS
痴漢の際に性器表現を用いた
210: 2017/06/16(金)18:35 ID:1eQLQexT(1) AAS
成基学園ってまだあるんかね
211: 2017/06/19(月)22:55 ID:HM1jnBNt(1) AAS
システム関係の仕事してるけど正規表現知ってるとホント仕事がはかどるわ
知らん奴いたら教えたくないレベルw
212: 2017/06/20(火)00:30 ID:qgvPAN/M(1) AAS
システム関係の仕事って自宅警備員のこと?
213: 2017/06/20(火)08:43 ID:bMt5HDL+(1) AAS
>>209
正規表現を用いて置換と挿入を行った
だろ
214: 2017/06/20(火)12:36 ID:5s5M5H6z(1) AAS
痴漢と挿入
215: 2017/06/20(火)16:59 ID:V+xxZfop(1) AAS
表現を抜いてれば完璧
216: 2017/06/22(木)00:33 ID:WTVST2HN(1) AAS
痴漢って挿入する前にするものなのか?
217: 2017/06/25(日)14:01 ID:cBKwT0iz(1/6) AAS
挿入したら痴漢じゃなくなるからそういうことだな
218: 2017/06/25(日)14:08 ID:cBKwT0iz(2/6) AAS
質問です。

外部リンク:hayabusa3.2ch・sc/test/read.cgi/news/1498009569/
↑ここに、「それは文科省にとってリスクか&#12441;あるわけて&#12441;すね。」っていう文章があります。
これをエディタで置換したいです。
秀丸エディタには半角化、全角化があるので、
「&#12441;」を「゛」に、「゛」とその前を半角に、「゙」とその前を全角にと言う手順で全角濁音化することができます。
しかし、段階的に置換すると、[ニダ]と言う文字が[ニダ]となります。
専ブラでなく普通のエディタでメール欄に限定せず「&#12441;」だけをちゃんと全角濁音化するにはどうしたらいいでしょうか。
219: 2017/06/25(日)14:14 ID:cBKwT0iz(3/6) AAS
変換関数をネストして、全角から直接全角に置換すれば大丈夫っぽいです。
スレ汚し失礼しました。
220: 2017/06/25(日)14:17 ID:lrjpj5rj(1) AAS
マクロ
221: 2017/06/25(日)14:24 ID:cBKwT0iz(4/6) AAS
マクロを覚えるほど気力ないので。
せいぜいキーボードマクロまでですね。

メモ:
1回目「゙」→「゛」
2回目「[か-こさ-そた-と][゛]」→「\((0,ToHankaku),ToZenkakuHira)」
222
(4): 2017/06/25(日)14:40 ID:gOEYQ1GV(1) AAS
Unicode正規化
223: 2017/06/25(日)15:09 ID:cBKwT0iz(5/6) AAS
ID:fr6XvX0v3

DOSコマンドでいけるよ

【.cmd】 バッチファイルスクリプト %12 【.bat】
2chスレ:tech

なんかscに書けなくなった。
認証が延々と出てくる。
224: 2017/06/25(日)15:19 ID:cBKwT0iz(6/6) AAS
>>222
なるほど。

外部リンク[html]:hide.maruo.co.jp
> Unicode正規化を行ないます。
> パラメータとしてNFC、NFD、NFKC、NFKDが指定可能です。

Googlエ
> 合成形に正規化する方法を NFC(Normalization Form Composition)
225: 2017/06/29(木)16:59 ID:02bfNUCV(1) AAS
質問します
●Meryで置換

●対象データ
wwwwwwwa,AAAAA,gawgagaw,fwaf awfaf
n,BBB,gawgagaw,fwaf awfa,fwaaw,fwaaw
rea,CCCC
ae,DD,gawgagaw,fwaf awfaf ,fwaaw

●希望する結果
カンマ2番目の
AAAAA
省12
226
(1): 2017/06/29(木)18:40 ID:poRQnsAj(1) AAS
(^.*?,).*?(?=[,¥n])
rea,CCCCのパターンが行末だとできないんだよなー。
227
(1): 2017/06/29(木)18:57 ID:WmvxL1Sm(1) AAS
^([^,]*,)[^,\r\n]+

$1******
に置換
"a,b",defのようなものはダメだが
228: 2017/06/30(金)03:23 ID:9+Qy2E7i(1) AAS
>>226-227
ありがとうございます 上手くいきました 
使わせていただきます&勉強材料にさせていただきます
229
(1): 2017/07/06(木)20:38 ID:zX6kiHLz(1) AAS
質問です。
●Regular Expressionの使用環境
Java Script

●検索か置換か?
置換

●対象データ
abc:ABCDEFG
def:123456789
ghi:くぁwせdr

●希望する結果
省5
230
(2): 2017/07/07(金)08:13 ID:QFC9teR0(1) AAS
後読みが使えないJSなら/def:(.*?$)/m
使えるなら/(?<=def:).*?$/m
231
(2): 2017/07/08(土)02:10 ID:OqNCkVph(1) AAS
BBCの正規表現クイズ。たまにはこういうのも面白いね
外部リンク:www.bbc.co.uk
232
(1): 2017/07/08(土)06:16 ID:b/20QJ7+(1/2) AAS
>>230
こういう場合、先読みの方法でやるメリットって有るんですか?
初心者なんで教えて下さい。
233: 2017/07/08(土)06:17 ID:b/20QJ7+(2/2) AAS
訂正
後読みでした。
234: 2017/07/08(土)09:10 ID:NOOXEVdu(1) AAS
>>232
後読みの部分にはマッチしない

つまり>>229で後読み使った場合には
123456789
にマッチするがそうでない場合は
def:123456789
にマッチする
235: 2017/07/08(土)19:51 ID:utlt5XjQ(1) AAS
後読みの説明はそうなんだけど、>>230 について訊いてるんでしょ?

俺も>>230の意図はよくわからん。行単位の処理を希望してるのにm付けてるし
236: 2017/07/10(月)01:20 ID:8zNQYoZi(1) AAS
>>231
日本語の記事
外部リンク:gigazine.net
237: 2017/07/15(土)10:24 ID:/mu01QmD(1) AAS
>>231
新しいなコレ!

面白いんでエクセルで入力できるフォーマットを作ってみた
外部リンク[xls]:www.dotup.org

(拡張子でうちのエクセルが激古なのがバレる…)
238: 2017/07/15(土)12:03 ID:6mzqXSAQ(1) AAS
少しやって時間の問題だなと思って途中で切り上げて答見たけど
数文字しか合ってなかった
最後までやらなくてよかった
239
(1): 2017/07/25(火)08:57 ID:QW1aVSBc(1/5) AAS
●Regular Expressionの使用環境
VBA7.1

●検索か置換か?
検索

●説明
期待する数値の桁数かどうか。拡張子はあっても無くても良い。

●対象データ
AA17-0001.xlsm
AA17-0002

●希望する結果
省8
240
(2): 2017/07/25(火)09:09 ID:jjK7Ecmt(1) AAS
>>239
VBAの仕様は知らんけど、これでできない?
^AA¥d{2}¥-¥d{4}(¥.xlsm)?$
241: 2017/07/25(火)12:00 ID:QW1aVSBc(2/5) AAS
>>240
有り難うございます!ばっちりです。
$マークを足すだけで良かったんですね。助かりました。
242
(1): 2017/07/25(火)12:23 ID:QW1aVSBc(3/5) AAS
差し支え無ければ、 ^AA\d{2}-\d{4}(\.xlsm)? だと

ND17-00001
ND17-00001.xlsm2

等々にもマッチしてしまう理由を教えていただけないでしょうか。
243
(1): 2017/07/25(火)12:24 ID:QW1aVSBc(4/5) AAS
ミス。AAでした。
AA17-00001
AA17-00001.xlsm2
244: 2017/07/25(火)12:38 ID:0gI9u146(1) AAS
>>242,243
横からだけど
AA17-0000部分にマッチしちゃうんじゃない?
245: 2017/07/25(火)13:05 ID:BGzbzmfB(1) AAS
^AA\d{2}-\d{4}(\.xlsm$)?

"^AA\d{2}-\d{4}" と "^AA\d{2}-\d{4}\.xlsm$" という意味
AA17-00001
AA17-00001.xlsm2
の "AA17-0000" の部分に前者がマッチする
"^AA\d{2}-\d{4}$" であればマッチしない
246: 2017/07/25(火)13:22 ID:QW1aVSBc(5/5) AAS
なるほど。分かりやすく有り難うございます!
だから>>240で期待通りになるんですね。
頭固いと理解するのが大変です。。orz
247: 2017/07/25(火)13:29 ID:oWvKCPb4(1) AAS
?は「直前のパターンが 0回または 1回登場する事」なので、そのパターン中に、$「行末」を含めてしまうと、(0回登場側で)効果が消えてしまう。
1人で書いてるとよくやるミスだと思う。
248: 2017/07/25(火)21:26 ID:lTcbRvTI(1) AAS
^AA\d{2}-\d{4}
は実は
^AA\d{2}-\d{4}.*$
だと考えれば理解の助けになるかも。ならないかも。
249
(5): 2017/07/26(水)01:05 ID:3rtPYRQF(1) AAS
^AA\d{2}-\d{4}(\.xlsm$)?

$?
行末の後ろに、? か。
この式は、見た瞬間に、おかしいとわかる
250
(1): 2017/07/26(水)11:10 ID:Vp/yahqk(1/2) AAS
>>249
文法的にも間違いでは無いだろ
251
(1): 2017/07/26(水)13:08 ID:9H6h7u80(1) AAS
>>250
文法的には正しいけれど、式としておかしい「と感じる事ができる」と言いたいんだと思う。
252: 2017/07/26(水)14:48 ID:Vp/yahqk(2/2) AAS
>>251
式としても正しい
253
(2): 2017/07/26(水)14:55 ID:aH2YwDtv(1) AAS
250,252みたいなのをアスペっていうんだろうな
論点は式や文法として正しいか正しくないかではないって事ぐらい一目見れば分かりそうなもんだが
254: 2017/07/26(水)16:41 ID:NnPMbS6q(1) AAS
きちんと整理すると目的に合わない正規表現が直感的に分かるエスパー能力
としか言いようがないし>>249がその能力者だとしても特に羨ましくもない
255: 2017/07/26(水)17:37 ID:UlpW8N7A(1/2) AAS
例えば、エディタの検索等で強調表示する際の式としてなら何も不思議は無いが
プログラム中での判定式ならば後者は必ず前者にマッチするので意味を成さない
つまり無駄に冗長であったり何かミスをしている可能性が高い。そういう事でしょ
256: 2017/07/26(水)17:37 ID:Sop8S35W(1) AAS
>>253
プログラマに多いタイプではある
257: 2017/07/26(水)17:52 ID:Bbl5PJto(1) AAS
問題は >>249 が何の役にも立ちそうにないということじゃないかな。
何を言いたいか想像できなくもないが、単に知らないだけという可能性もまた捨てきれない。
ここはそういう場所だ。
明確に「$ は末尾にだけ書くようにすれば間違いを防げると思うよ」とでも書けばよかったのに。
258: 2017/07/26(水)18:26 ID:UlpW8N7A(2/2) AAS
まあ読点の打ち方とかみるにアホガキか底辺土方がドヤりたかっただけだろうから
そろそろそっとしておいておやり
259: 2017/07/26(水)19:38 ID:VudXLbcK(1) AAS
臭う正規表現だと言えばいいのかな
260: 2017/07/26(水)21:03 ID:JJ3vg08i(1) AAS
>>249は句読点の打ち方からも、おかしいとわかる

発端は正規表現は行を対象にマッチするものという偏見じゃないか
261: 2017/07/27(木)08:25 ID:JB/MQIbV(1) AAS
>>253
もう本来の問題は解決して、間違いを防ぐという話をしているところに >>249 だ。
いかにも頭悪そうだけど何しに来たんだというのが論点じゃないのか?
1-
あと 741 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.246s*