[過去ログ] Regular Expression(正規表現) Part14 [無断転載禁止]©2ch.net (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
101(3): 2017/05/05(金)08:29 ID:bm+deAdf(1) AAS
「Regular Expression」ってことは
RegularじゃないExpressionもあるのかな?
102: 2017/05/05(金)11:21 ID:Ll1Ek2oh(1) AAS
>>101
外部リンク:www.google.co.jp
103: 2017/05/05(金)13:41 ID:Xc50Qjgk(1) AAS
>「irregular expression」に関連するキーワード
>
>保守速報
ワロタ
104(1): 2017/05/07(日)03:23 ID:bf3ZF7DF(1) AAS
>>101
正規表現で表される集合の標本それぞれが正規でない表現じゃないの
105: 2017/05/07(日)07:31 ID:fOF53fEF(1) AAS
そもそも誤訳だし
106: 101 2017/05/07(日)16:34 ID:fwX9OlSY(1) AAS
>>104
なるほどおおおおぉぉぉ!!!
合点がいきまくりんぐです。ありがとうございます!
107: 2017/05/13(土)23:19 ID:4xoUv3bU(1) AAS
書き込めない?
108(1): 2017/05/14(日)17:21 ID:IUk17Lsy(1/2) AAS
●Regular Expressionの使用環境
サクラエディタ
●検索か置換か?
検索
●説明
「ABC」の英大文字と小文字を区別せずに検索したいのですが
書き方はあるのでしょうか?
今は『abc|Abc|ABC』という正規表現を使っていますが
書くのがめんどうだし、aBcやabCにもヒットさせたいので
もっと簡潔な書き方があれば教えて下さい。
109(1): 2017/05/14(日)18:29 ID:YzpdvDlp(1) AAS
>>108
(?i:ABC)
で行けるんではなかろうか
110(1): 2017/05/14(日)18:30 ID:qjlEaygK(1) AAS
そのものズバリのチェックボックスがあるのに釣りかメクラか
111(6): 2017/05/14(日)20:19 ID:IUk17Lsy(2/2) AAS
>>110
すみません、実はJaneStyleなど複数の環境で正規表現を使っていて、一番よく使うサクラエディタを例に出してしまいました。
確かにサクラエディタだと「英大文字と小文字を区別する」ってチェックがありますよね・・・
>>109
ありがとうございます!バッチリいけました。 ><
112(2): 2017/05/27(土)19:51 ID:gdXMy//z(1) AAS
●Regular Expressionの使用環境
テキストエディタMeryでの強調文字列指定について質問です
外部リンク:www.haijin-boys.com
Onigmo (Oniguruma-mod) (regular expression library) 5.15.0
外部リンク:github.com
●検索か置換か?
検索?
●対象データ
"D:\PATH\HOGE",1,307,,0,"15/01/01 00:00:00","12/12/31 00:00:00",1,1,,,,"著者X",,,,,"タイトルA",,,2,,,,,1,1101,1101
"D:\PATH\FUGA",,,,,,"15/02/01 00:00:00",1,1,,,,,,,,,"名前B",4,,0
省14
113(1): 2017/05/28(日)06:04 ID:PkY5eGnw(1) AAS
"[^"]*"(?=[^"]*$)
(?<=")[^"]*(?="[^"]*$)
114: 112 2017/05/28(日)07:52 ID:5aByZaI0(1/2) AAS
>>113
両方のパターンを教えていただきまして、ありがとうございます
"フォルダパス" の "[A-Z]:\\.+?" と "年/月/日 時:分:秒 "の "../.+?"
タイトルフィールドだけは全/半スペースで字下げして "[ ]+.+?" というパターンまでは作れましたが
字下げなしで強調表示できるようになり、一層見分けやすく、編集しやすくなりました
なぜこれらが最後の "タイトル" 部分にマッチするのか、まだ理解できてはいないのですが
読み解けるように頑張ってみます
115: 112 2017/05/28(日)11:31 ID:5aByZaI0(2/2) AAS
先読みと後読みの使い方をなんとなく理解できるようになったかも?という感じで、自分で同じ表現をすぐに導き出せるかとなるとまだまだ難しそうです
調子にのって後読みで12番目のカンマの後ろの "著者" にマッチさせようとやってみましたが、繰り返し表現をふくむ後読みはダメだとか…
^".+?"([^,]*,){12}".+?" で「行頭から"著者"まで」はできても ^(?<=".+?"([^,]*,){12})".+?" では機能しないんですね
あれこれ弄り回して "タイトル" からカンマ5つ戻るかたちで先読みにして "[^"]*"(?=(,[^,]*){5}"[^"]*"(?=[^"]*$)) にしたら "著者" に
同様に {4} で "出版社" にマッチしました
おかげさまで色々と勉強になり、あらためてありがとうございました
116(1): 2017/05/28(日)12:13 ID:IsUf2Pl+(1) AAS
こんな古代呪文みたいなの、実際に仕事とかで使ってないとなかなか覚えないし
覚えてもすぐ忘れてしまうよなw
全てのパターンを記憶して空で完全詠唱できる人なんているんだろうか?
117: 2017/05/28(日)13:15 ID:QUomuFPF(1) AAS
暗唱できる必要性があるのか?
使うときにそういうのがあったなあって思う出すだけでいいだろ
あとは詳細を見て使えばいいだけ
118(1): 2017/05/28(日)13:26 ID:35oU3ReV(1) AAS
仕事じゃなく趣味で覚えたけど
間違いなく覚えた方が便利
どっかに正規表現化してるだけでお金貰える仕事ないかな
119: 2017/05/28(日)15:27 ID:dHcH/mRb(1) AAS
>>116
わたしレベルになると詠唱破棄すら可能w
120: 2017/05/28(日)16:06 ID:MqtJ47ff(1) AAS
言語環境ごとに使える使えない、エスケープ必要不必要を間違えたりする
サポートしてない環境の多い先読みとかは他の手段使っちゃったりするからなかなか使いこなせない
121: 2017/05/28(日)16:10 ID:W53JMrzP(1) AAS
$1 と \1 を間違えて泣きをみて以来、むしろ記憶しないようにしている……・
122: 2017/05/28(日)16:18 ID:mQ0E20+1(1) AAS
perlから初めるとカタワになるな
123: 2017/05/29(月)08:14 ID:XV2pt9yI(1) AAS
えっ!?
124(1): 2017/05/29(月)11:05 ID:sPbSPx8D(1/3) AAS
コマンドプロンプトのfindstrコマンドで使えるやつより貧弱な正規表現環境なんてないよね?
125: 2017/05/29(月)11:21 ID:sPbSPx8D(2/3) AAS
外部リンク:imgur.com
126: 2017/05/29(月)11:24 ID:sPbSPx8D(3/3) AAS
貼り間違えた
画像リンク[jpg]:i.imgur.com
127: 2017/05/29(月)21:58 ID:YdL4iPz3(1) AAS
>>124
おれの彼女の胸
128(1): 2017/05/30(火)13:16 ID:V9BCWx6K(1) AAS
>>118
とある地方の区画整理の際、住所表記が変わるので
住所を正規化するために正規表現と簡単なDB処理とを組み合わせた
単純な処理を行うだけの1日仕事で、
そこらのリーマンの3ヶ月分ぐらいお金になった事とかあったな
仕事柄色んな会社を訪問するけど
テキストの簡単な置換すらできない(まずテキスト置換という概念を知らない)人って
事務程度でしかパソコン使わない人にはめちゃくちゃ多いんだよね
そんなに人達に (.+)abcd\n みたいな初歩的な正規表現を教えると
物凄く驚かれる
省1
129(1): 2017/05/30(火)17:50 ID:bhgaCfDA(1) AAS
>>128
まぁハードル高いよね、低くないと言うべきか
知らなきゃ「正規表現」というチェックボックスがあっても、それが何をするものなのか
言葉から具体的イメージが全く湧かないし
ヘルプ見てはじめて何をするものなのかわかるという、といっても具体例が
無ければヘルプ見たところで「難しそう>便利そう」になりがち
一目で「難しそう<便利そう」になるならとっくに正規表現を使ってる層だろうし
ファイルの検索 や excel や word や メモ帳 、IE、Edge あたりに正規表現が
最初っからあれば話は違ってくるんだろうなと
Mac触った事ないからアレだけど、Macなら充実してるのかしら?
130(1): 2017/05/30(火)22:14 ID:wMq9WrJJ(1) AAS
>>129
システム屋やってる人間からしても正規表現って見るからにとっつきにくそうだもんな。
システム会社なのに知らない人間の方が多いというw
131(1): 2017/05/30(火)22:28 ID:RvF0nsOU(1) AAS
>>130
えー
プログラム組む人種なら例外なく好物だと思ってたんだが(^^;;
132(1): 2017/05/31(水)02:32 ID:6BoaVWxP(1) AAS
システム屋とかシステム会社って何のシステム?
133(1): 2017/05/31(水)05:29 ID:hSyYnyRA(1) AAS
使い捨てコードといったらPerlで書いてた世代は正規表現に抵抗無さそう
134(2): 2017/05/31(水)05:30 ID:sJHTybMt(1) AAS
>>131
VBとかでポチポチやってる人は嫌いそう
GUIで書けるいいツールがあったら広まるかもね
135(2): 2017/05/31(水)08:06 ID:rBoo2fCo(1) AAS
小さな会社だと他より少しPC関連に詳しいってだけでIT部長とか言われこき使われる
勿論そんな役職なんて無い
正規表現なんて言葉を発したらセクハラだの変態だの言われかねん
136: 2017/05/31(水)11:16 ID:u9qpXxTe(1/3) AAS
>>135
正規表現で置換
とか知らない人が聞いたらアレだもんなw
>>133
正にその世代だけど
昔のperlは正規表現抜きでも変態記法満載だったから
だんだん昔のコードは読めない人が増えてきてる
$line =~ s/(?:\x0D\x0A|[\x0D\x0A])?$/,/;
@values = map {/^"(.*)"$/s ? scalar($_ = $1, s/""/"/g, $_) : $_}
10年ぐらい前のメモからのコピペだけど見ただけで目眩がするw
137: 2017/05/31(水)11:27 ID:u9qpXxTe(2/3) AAS
>>132
一概にシステムといっても色々あるからね
機器制御系システムなんかだと正規表現を使う機会なんてまず無いだろうし
WEB系の事やってるなら何だかんだで正規表現を使う機会はそこそこあるだろうし
138(2): 2017/05/31(水)11:46 ID:AV1cHHAT(1) AAS
CSV は、" などのエスケープについて、様々な方言があるから、正規表現では無理。
CSV の方言・規格を確定させてから、Ruby を使うべき
バグのほとんどが設計段階・仕様で生じる。
方言さえ確定していれば、バグらない
139: 2017/05/31(水)11:53 ID:L1juUrGR(1) AAS
>>135
会社の忘年会では正規表現やりますって言ってパンツ脱ぐのか?
140: 2017/05/31(水)12:15 ID:u9qpXxTe(3/3) AAS
>>138
仕事内容にもよるけどそんな事はない
なんせ世の中にはExcelのデータが糞ほどあるので
「Excelルールのcsvを正規表現で処理する+α」の仕事だけでも
たぶんそこらのリーマンよりは稼がせてもらってきたよ
日本の企業の大半は中小企業なわけだけど
ほんと信じられないほど無駄な事やってる会社がたくさんあるからね
こんな時間に2chなんてやってられるのも、そのお陰ですわ
141: 2017/05/31(水)12:35 ID:MQUo5X9j(1/2) AAS
万能な処理って得てして使いにくいしな
142(1): 2017/05/31(水)12:44 ID:gy6WrZsR(1) AAS
>>138
Rubyを使うべき、と言う唐突な結論以外は同意できる。
Ruby (のようなスクリプト)を使うべきなら完全に同意できたのに。
143: 2017/05/31(水)16:04 ID:jFN45aLj(1) AAS
>>142
少し日本語は下手だが、
事前にCSV の方言・規格を確定すべし
という主張と読んだ。
144(1): 2017/05/31(水)17:04 ID:MQUo5X9j(2/2) AAS
なぜrubyなのかよく分からん
多少正規表現エンジンの種類やバージョンの違いはあれど
正規表現はperlでもPHPでもJavaScriptでもPythonでも使えるし
rubyの正規表現なんて昔はコールバック処理するのがくそ面倒だった筈だが
145: 2017/05/31(水)17:10 ID:BtqSGsFQ(1) AAS
正規表現を使わずにrubyでやれと言いたいのでは
まあ確かにrubyは標準で簡単強力なcsv処理ができるけど
ruby以外でのcsvの処理の仕方を知らない知識不足な人の戯言にしか見えない
146: 2017/05/31(水)17:29 ID:nyiBm3r5(1) AAS
excelでも正規表現使えるけどな
147: 2017/05/31(水)17:55 ID:b1E/NNUq(1) AAS
>>144
たぶんrubyのような言語と言いたかったのだと推察致しまする
148(2): 2017/06/01(木)04:08 ID:+TrYOuL5(1/2) AAS
>>134
VB(今時は.NET)では入力チェックとかでよく使うからお前の偏見だよ。
149(1): 2017/06/01(木)04:08 ID:+TrYOuL5(2/2) AAS
>>134
いい忘れたがサクラのマクロもよく使う。
150: 2017/06/01(木)05:13 ID:gHUhkzd0(1/2) AAS
>>148
VBやってるやつが皆そうやってると思うか?
それこそ偏見だ
151: 2017/06/01(木)05:24 ID:gHUhkzd0(2/2) AAS
>>149
お前個人の話かよ
152: 2017/06/01(木)05:39 ID:pPoV2n06(1) AAS
そもそもテキスト処理じゃないと使わんよ
使う使う言う奴はプログラミングの分野が偏ってるんじゃないか?
153(1): 2017/06/01(木)06:10 ID:htPbJpjE(1) AAS
エンドユーザーに近い分野で使うというより、開発者が使うものでしょ。SQLとかと同じ。
154(1): 2017/06/01(木)08:16 ID:YbQp1MN1(1/3) AAS
>>153
そりゃプログラムから使うものだから開発者しか使わんよ
そう言う意味じゃなくて利用者が入力した値の妥当性確認とかに使うケースが多いんじゃね?
って話なんだろ
155: 2017/06/01(木)09:37 ID:OU3iOJ/C(1) AAS
>>148
これが偏見な
156(1): 2017/06/01(木)10:35 ID:Fkhc5exB(1) AAS
エマ中尉の盾になって死んだ人?
157(1): 2017/06/01(木)12:16 ID:o/dQD8LP(1) AAS
>>154
特殊な例を一般化するのはよくない
158: 2017/06/01(木)12:52 ID:YbQp1MN1(2/3) AAS
>>157
特殊?
そう言うなら他にもっと使われてる用途挙げてくれ
159(1): 2017/06/01(木)12:55 ID:uSxzswpP(1) AAS
検索じゃろ
grep然りsed然りエディタの検索然り
160: 2017/06/01(木)20:45 ID:YbQp1MN1(3/3) AAS
>>159
その辺りもエンドユーザー(多くは開発者だと思うけど)に近いところじゃね?
161: 2017/06/01(木)21:36 ID:z/dTvzRJ(1) AAS
一般に正規表現自体をどこで使うかの話と違うんか?
プログラマがどこで使うかって文脈に限定してるのんか?
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
数学用語で考えると、「正則式」
上下前次1-新書関写板覧索設栞歴
あと 802 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.033s