- 1 名前:デフォルトの名無しさん [2017/03/15(水) 02:04:35.47 ID:e01p03UP.net]
- Regular Expressionスレです。
質問する場合は必ず実装言語や処理系ソフトウェア名を示してください。 前スレ Regular Expression(正規表現) Part13 echo.2ch.net/test/read.cgi/tech/1415149975/ 次スレは>>980宜しく 天ぷら等2以降
- 82 名前:デフォルトの名無しさん [2017/04/30(日) 04:34:43.13 ID:smayr5dM.net]
- >>80
確かに邪魔だけど、おこるほどじゃない
- 83 名前:デフォルトの名無しさん mailto:sage [2017/04/30(日) 07:25:58.21 ID:PxU3UZJt.net]
- >>80
それも少し思ったんだが重箱の隅をつついてると受け取られ答えてもらえないんじゃないかとか色々悩んだ末 出来るだけ丁寧にとこうなった もし次があったら気を付ける。すまんかったな
- 84 名前:デフォルトの名無しさん mailto:sage [2017/04/30(日) 07:50:01.45 ID:BxxkE9Fv.net]
- 丁寧な方がいいに決まってる
>>80はバカだから長文がウザいことに気付かず 丁寧語がウザいと的外れな指摘をしている。
- 85 名前:デフォルトの名無しさん mailto:sage [2017/04/30(日) 08:21:18.33 ID:PxU3UZJt.net]
- >>83
自分を非難している相手を擁護するのは変な感じだが バカかどうかはあの一文からは分からないでしょ それに自分も慇懃無礼にあたらないかとは危惧していたし的外れとは言えないと思う 何でも度が過ぎるのは良くない だが齟齬を生じさせないようにする為にはこういったスレで長文になるのは仕方なくないか? 身の丈に合わない質問して「この解釈で合ってる?」みたいな聞き方した自分にも非があるとは思うが バカ丁寧禁止より長文禁止の方が厳しいと思うわ
- 86 名前:デフォルトの名無しさん mailto:sage [2017/04/30(日) 09:47:52.98 ID:Dc5Ny+RF.net]
- 正規表現で数字は、[0-9] または、\d
[0-9][0-9] なら、\d{2} と同じ
- 87 名前:デフォルトの名無しさん mailto:sage [2017/04/30(日) 12:18:27.09 ID:VPr4LyhY.net]
- 丁寧なことが必ずしも良いとは限らない
質問するときは相手のことも考えて無駄を省くことが大事 質問を整理している間に自分で気付くこともある
- 88 名前:デフォルトの名無しさん mailto:sage [2017/04/30(日) 15:52:39.90 ID:3TcYedTF.net]
- >>84
>バカ丁寧禁止より長文禁止の方が厳しいと思うわ 読む側は馬鹿丁寧な長文=好感が持てる、長文でも許せる 丁寧でないけど長文=丁寧でない癖に長文だとぉ〜?!許せん ってなる
- 89 名前:デフォルトの名無しさん mailto:sage [2017/04/30(日) 20:35:41.23 ID:IjVGB2EF.net]
- お前ら仲良くしろ
- 90 名前:デフォルトの名無しさん mailto:sage [2017/05/01(月) 09:32:05.11 ID:lsW6qson.net]
- 長文NGしてれば見なくて済むのにわざわざ見てウゼェ言ってる奴って
マゾなの?やり方分かんないバカなの?ウゼェ言ってる俺カッケーな池沼?
- 91 名前:デフォルトの名無しさん mailto:sage [2017/05/01(月) 11:29:31.86 ID:hzoMRY/L.net]
- 3行でまとめろ
- 92 名前:デフォルトの名無しさん [2017/05/01(月) 18:42:02.68 ID:Ypd7EE7u.net]
- ダ・ヴィンチ曰く「単純であることは究極の洗練だ」
今回の例にどれほど当てはまるかはわからんが、目指すのはそこだ。
- 93 名前:デフォルトの名無しさん mailto:sage [2017/05/03(水) 15:46:12.05 ID:/wkwyrKC.net]
- 検索置換を教えて下さい。
行末の半角数字(桁数はまちまち)を行頭に移動したいです。 ────────────── ■置換前■ abc1 東44 4-123 あいうえお02 ────────────── ■置換後■ 1abc 44東 1234- 02あいうえお ────────────── 使ってるエディタはgpadです。サクラエディタもあります。宜しくお願い致します。
- 94 名前:デフォルトの名無しさん mailto:sage [2017/05/03(水) 16:08:53.89 ID:KtRh/Jcn.net]
- >>92
gpadやサクラエディタは知らんけどJSならこんな感じ replace(/(.*?)([0-9]*)¥n/g, "$2$1¥n") 最後の行にも改行がある前提 なければ入力の最後を示す$をOR条件として指定する
- 95 名前:デフォルトの名無しさん mailto:sage [2017/05/03(水) 17:09:36.61 ID:/wkwyrKC.net]
- >>93
ありがとうございます。レスをいただき申し訳ないのですが、 最初に書いているようにテキストエディタでできる検索置換を教えて頂きたいのです。
- 96 名前:デフォルトの名無しさん mailto:sage [2017/05/03(水) 17:53:10.90 ID:tt/7nJiL.net]
- >>94
gpad の[検索]-[置換]で 検索文字列 ^(.*\D)(\d+) 置換文字列 $2$1 とかかな
- 97 名前:デフォルトの名無しさん mailto:sage [2017/05/03(水) 18:09:12.54 ID:/wkwyrKC.net]
- >>95
すごいできます!即レスありがとうございました!感謝です!
- 98 名前:デフォルトの名無しさん mailto:sage [2017/05/04(木) 02:53:36.15 ID:P+e+GY0n.net]
- ●Regular Expressionの使用環境
Bash on Ubuntu on Windows での sed ●検索か置換か? 置換 ●説明 [ と ] で括られた最初の文言以外を削除したい ●対象データ aaa[bbb]ccc [ddd]eee fff[ggg]hhh[iii]jjj kkk ●希望する結果 bbb ddd ggg 空行、もしくは、そのまま(上記だとkkk) cat hoge.txt | sed -e 's/.*\(\[.*]\)/\1/g' で行けそうな気がしたんですが、結果は [bbb]ccc [ddd]eee [iii]jjj kkk この有様。誰か助けてください。
- 99 名前:デフォルトの名無しさん mailto:sage [2017/05/04(木) 03:21:35.65 ID:1Mi5Sic1.net]
- >>97
s/\].*\|.*\[//g
- 100 名前:デフォルトの名無しさん mailto:sage [2017/05/04(木) 03:22:48.12 ID:7TNYL3q7.net]
- cat test.txt | sed -E 's/[^\[]*(\[[^\[]*\]).*/\1/g'
sedはnon-greedyサポートしてないので[^\[]*で "["以外の文字にマッチするように指定する
- 101 名前:デフォルトの名無しさん mailto:sage [2017/05/04(木) 10:29:51.92 ID:P+e+GY0n.net]
- >>98
cat hoge.txt | sed -e 's/\].*\|.*\[//g' これだと3行目が2つ目の [ ] のを拾ってしまった。 bbb ddd iii kkk >>99 cat hoge.txt | sed -E 's/[^\[]*(\[[^\[]*\]).*/\1/g' [bbb] [ddd] [ggg] kkk 狙い通りのが拾えました。[ ] が付いてくるけどそれは自分で外します。 どうもありがとうございました。
- 102 名前:デフォルトの名無しさん mailto:sage [2017/05/05(金) 08:29:26.53 ID:bm+deAdf.net]
- 「Regular Expression」ってことは
RegularじゃないExpressionもあるのかな?
- 103 名前:デフォルトの名無しさん [2017/05/05(金) 11:21:47.47 ID:Ll1Ek2oh.net]
- >>101
https://www.google.co.jp/search?q=irregular+expression&ie=UTF-8&oe=UTF-8&hl=ja-jp&client=safari
- 104 名前:デフォルトの名無しさん mailto:sage [2017/05/05(金) 13:41:26.64 ID:Xc50Qjgk.net]
- >「irregular expression」に関連するキーワード
> >保守速報 ワロタ
- 105 名前:デフォルトの名無しさん mailto:sage [2017/05/07(日) 03:23:46.82 ID:bf3ZF7DF.net]
- >>101
正規表現で表される集合の標本それぞれが正規でない表現じゃないの
- 106 名前:デフォルトの名無しさん [2017/05/07(日) 07:31:07.21 ID:fOF53fEF.net]
- そもそも誤訳だし
- 107 名前:101 mailto:sage [2017/05/07(日) 16:34:35.27 ID:fwX9OlSY.net]
- >>104
なるほどおおおおぉぉぉ!!! 合点がいきまくりんぐです。ありがとうございます!
- 108 名前:デフォルトの名無しさん [2017/05/13(土) 23:19:52.64 ID:4xoUv3bU.net]
- 書き込めない?
- 109 名前:デフォルトの名無しさん mailto:sage [2017/05/14(日) 17:21:45.80 ID:IUk17Lsy.net]
- ●Regular Expressionの使用環境
サクラエディタ ●検索か置換か? 検索 ●説明 「ABC
- 110 名前:」の英大文字と小文字を区別せずに検索したいのですが
書き方はあるのでしょうか? 今は『abc|Abc|ABC』という正規表現を使っていますが 書くのがめんどうだし、aBcやabCにもヒットさせたいので もっと簡潔な書き方があれば教えて下さい。 [] - [ここ壊れてます]
- 111 名前:デフォルトの名無しさん mailto:sage [2017/05/14(日) 18:29:13.61 ID:YzpdvDlp.net]
- >>108
(?i:ABC) で行けるんではなかろうか
- 112 名前:デフォルトの名無しさん mailto:sage [2017/05/14(日) 18:30:36.34 ID:qjlEaygK.net]
- そのものズバリのチェックボックスがあるのに釣りかメクラか
- 113 名前:デフォルトの名無しさん mailto:sage [2017/05/14(日) 20:19:12.83 ID:IUk17Lsy.net]
- >>110
すみません、実はJaneStyleなど複数の環境で正規表現を使っていて、一番よく使うサクラエディタを例に出してしまいました。 確かにサクラエディタだと「英大文字と小文字を区別する」ってチェックがありますよね・・・ >>109 ありがとうございます!バッチリいけました。 ><
- 114 名前:デフォルトの名無しさん mailto:sage [2017/05/27(土) 19:51:02.34 ID:gdXMy//z.net]
- ●Regular Expressionの使用環境
テキストエディタMeryでの強調文字列指定について質問です www.haijin-boys.com/ Onigmo (Oniguruma-mod) (regular expression library) 5.15.0 https://github.com/k-takata/Onigmo ●検索か置換か? 検索? ●対象データ "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 "E:\FOLDER\PIYO",20,197,91,0,"16/03/01 00:00:00","15/04/01 00:00:00",1,1,,,,"著者Y,Z","出版社",,,,"題名C" ●希望する結果 上のようなテキスト各行の最後に出現するダブルクォーテーション囲いの文字列 "タイトルA" "名前B" "題名C" を取得して強調表示したいのですがどのような正規表現で記述すればよいのでしょうか? あるいはダブルクォーテーションを含まない状態(タイトルA、名前B、題名C)でも差し支えありません ●説明? ・各行でカンマや "" 囲いの数はまちまちで、"" 囲いの中にカンマがある場合もあります ・"" 囲いの中のカンマを無視した場合、17番目のカンマの直後の "" 囲い部分です ・"タイトルA"、"名前B"、"題名C"のあとに続く文字列の長さ、形式は不定です ・対照データはマンガミーヤのブックリストです よろしくお願いします
- 115 名前:デフォルトの名無しさん mailto:sage [2017/05/28(日) 06:04:53.01 ID:PkY5eGnw.net]
- "[^"]*"(?=[^"]*$)
(?<=")[^"]*(?="[^"]*$)
- 116 名前:112 mailto:sage [2017/05/28(日) 07:52:06.42 ID:5aByZaI0.net]
- >>113
両方のパターンを教えていただきまして、ありがとうございます "フォルダパス" の "[A-Z]:\\.+?" と "年/月/日 時:分:秒 "の "../.+?" タイトルフィールドだけは全/半スペースで字下げして "[ ]+.+?" というパターンまでは作れましたが 字下げなしで強調表示できるようになり、一層見分けやすく、編集しやすくなりました なぜこれらが最後の "タイトル" 部分にマッチするのか、まだ理解できてはいないのですが 読み解けるように頑張ってみます
- 117 名前:112 mailto:sage [2017/05/28(日) 11:31:39.10 ID:5aByZaI0.net]
- 先読みと後読みの使い方をなんとなく理解できるようになったかも?という感じで、自分で同じ表現をすぐに導き出せるかとなるとまだまだ難しそうです
調子にのって後読みで12番目のカンマの後ろの "著者" にマッチさせようとやってみましたが、繰り返し表現をふくむ後読みはダメだとか… ^".+?"([^,]*,){12}".+?" で「行頭から"著者"まで」はできても ^(?<=".+?"([^,]*,){12})".+?" では機能しないんですね あれこれ弄り回して "タイトル" からカンマ5つ戻るかたちで先読みにして "[^"]*"(?=(,[^,]*){5}"[^"]*"(?=[^"]*$)) にしたら "著者" に 同様に {4} で "出版社" にマッチしました おかげさまで色々と勉強になり、あらためてありがとうございました
- 118 名前:デフォルトの名無しさん mailto:sage [2017/05/28(日) 12:13:46.77 ID:IsUf2Pl+.net]
- こんな古代呪文みたいなの、実際に仕事とかで使ってないとなかなか覚えないし
覚えてもすぐ忘れてしまうよなw 全てのパターンを記憶して空で完全詠唱できる人なんているんだろうか?
- 119 名前:デフォルトの名無しさん mailto:sage [2017/05/28(日) 13:15:52.74 ID:QUomuFPF.net]
- 暗唱できる必要性があるのか?
使うときにそういうのがあったなあって思う出すだけでいいだろ あとは詳細を見て使えばいいだけ
- 120 名前:デフォルトの名無しさん mailto:sage [2017/05/28(日) 13:26:02.06 ID:35oU3ReV.net]
- 仕事じゃなく趣味で覚えたけど
間違いなく覚えた方が便利 どっかに正規表現化してるだけでお金貰える仕事ないかな
- 121 名前:デフォルトの名無しさん mailto:sage [2017/05/28(日) 15:27:00.29 ID:dHcH/mRb.net]
- >>116
わたしレベルになると詠唱破棄すら可能w
- 122 名前:デフォルトの名無しさん mailto:sage [2017/05/28(日) 16:06:45.06 ID:MqtJ47ff.net]
- 言語環境ごとに使える使えない、エスケープ必要不必要を間違えたりする
サポートしてない環境の多い先読みとかは他の手段使っちゃったりするからなかなか使いこなせない
- 123 名前:デフォルトの名無しさん mailto:sage [2017/05/28(日) 16:10:29.49 ID:W53JMrzP.net]
- $1 と \1 を間違えて泣きをみて以来、むしろ記憶しないようにしている……・
- 124 名前:デフォルトの名無しさん mailto:sage [2017/05/28(日) 16:18:27.70 ID:mQ0E20+1.net]
- perlから初めるとカタワになるな
- 125 名前:デフォルトの名無しさん mailto:sage [2017/05/29(月) 08:14:03.69 ID:XV2pt9yI.net]
- えっ!?
- 126 名前:デフォルトの名無しさん mailto:sage [2017/05/29(月) 11:05:33.03 ID:sPbSPx8D.net]
- コマンドプロンプトのfindstrコマンドで使えるやつより貧弱な正規表現環境なんてないよね?
- 127 名前:デフォルトの名無しさん mailto:sage [2017/05/29(月) 11:21:53.73 ID:sPbSPx8D.net]
- imgur.com/a/Yk1JN
- 128 名前:デフォルトの名無しさん mailto:sage [2017/05/29(月) 11:24:10.17 ID:sPbSPx8D.net]
- 貼り間違えた
i.imgur.com/CTLs1wr.jpg
- 129 名前:デフォルトの名無しさん mailto:sage [2017/05/29(月) 21:58:39.79 ID:YdL4iPz3.net]
- >>124
おれの彼女の胸
- 130 名前:デフォルトの名無しさん mailto:sage [2017/05/30(火) 13:16:32.07 ID:V9BCWx6K.net]
- >>118
とある地方の区画整理の際、住所表記が変わるので 住所を正規化するために正規表現と簡単なDB処理とを組み合わせた 単純な処理を行うだけの1日仕事で、 そこらのリーマンの3ヶ月分ぐらいお金になった事とかあったな 仕事柄色んな会社を訪問するけど テキストの簡単な置換すらできない(まずテキスト置換という概念を知らない)人って 事務程度でしかパソコン使わない人にはめちゃくちゃ多いんだよね そんなに人達に (.+)abcd\n みたいな初歩的な正規表現を教えると 物凄く驚かれる 見下すようだけど世の中そんなもん
- 131 名前:デフォルトの名無しさん mailto:sage [2017/05/30(火) 17:50:42.66 ID:bhgaCfDA.net]
- >>128
まぁハードル高いよね、低くないと言うべきか 知らなきゃ「正規表現」というチェックボックスがあっても、それが何をするものなのか 言葉から具体的イメージが全く湧かないし ヘルプ見てはじめて何をするものなのかわかるという、といっても具体例が 無ければヘルプ見たところで「難しそう>便利そう」になりがち 一目で「難しそう<便利そう」になるならとっくに正規表現を使ってる層だろうし ファイルの検索 や excel や word や メモ帳 、IE、Edge あたりに正規表現が 最初っからあれば話は違ってくるんだろうなと Mac触った事ないからアレだけど、Macなら充実してるのかしら?
- 132 名前:デフォルトの名無しさん mailto:sage [2017/05/30(火) 22:14:32.37 ID:wMq9WrJJ.net]
- >>129
システム屋やってる人間からしても正規表現って見るからにとっつきにくそうだもんな。 システム会社なのに知らない人間の方が多いというw
- 133 名前:デフォルトの名無しさん [2017/05/30(火) 22:28:36.41 ID:RvF0nsOU.net]
- >>130
えー プログラム組む人種なら例外なく好物だと思ってたんだが(^^;;
- 134 名前:デフォルトの名無しさん mailto:sage [2017/05/31(水) 02:32:02.26 ID:6BoaVWxP.net]
- システム屋とかシステム会社って何のシステム?
- 135 名前:デフォルトの名無しさん mailto:sage [2017/05/31(水) 05:29:32.86 ID:hSyYnyRA.net]
- 使い捨てコードといったらPerlで書いてた世代は正規表現に抵抗無さそう
- 136 名前:デフォルトの名無しさん mailto:sage [2017/05/31(水) 05:30:03.72 ID:sJHTybMt.net]
- >>131
VBとかでポチポチやってる人は嫌いそう GUIで書けるいいツールがあったら広まるかもね
- 137 名前:デフォルトの名無しさん mailto:sage [2017/05/31(水) 08:06:38.95 ID:rBoo2fCo.net]
- 小さな会社だと他より少しPC関連に詳しいってだけでIT部長とか言われこき使われる
勿論そんな役職なんて無い 正規表現なんて言葉を発したらセクハラだの変態だの言われかねん
- 138 名前:デフォルトの名無しさん mailto:sage [2017/05/31(水) 11:16:23.49 ID:u9qpXxTe.net]
- >>135
正規表現で置換 とか知らない人が聞いたらアレだもんなw >>133 正にその世代だけど 昔のperlは正規表現抜きでも変態記法満載だったから だんだん昔のコードは読めない人が増えてきてる $line =~ s/(?:\x0D\x0A|[\x0D\x0A])?$/,/; @values = map {/^"(.*)"$/s ? scalar($_ = $1, s/""/"/g, $_) : $_} 10年ぐらい前のメモからのコピペだけど見ただけで目眩がするw
- 139 名前:デフォルトの名無しさん mailto:sage [2017/05/31(水) 11:27:09.17 ID:u9qpXxTe.net]
- >>132
一概にシステムといっても色々あるからね 機器制御系システムなんかだと正規表現を使う機会なんてまず無いだろうし WEB系の事やってるなら何だかんだで正規表現を使う機会はそこそこあるだろうし
- 140 名前:デフォルトの名無しさん mailto:sage [2017/05/31(水) 11:46:52.88 ID:AV1cHHAT.net]
- CSV は、" などのエスケープについて、様々な方言があるから、正規表現では無理。
CSV の方言・規格を確定させてから、Ruby を使うべき バグのほとんどが設計段階・仕様で生じる。 方言さえ確定していれば、バグらない
- 141 名前:デフォルトの名無しさん mailto:sage [2017/05/31(水) 11:53:36.36 ID:L1juUrGR.net]
- >>135
会社の忘年会では正規表現やりますって言ってパンツ脱ぐのか?
- 142 名前:デフォルトの名無しさん mailto:sage [2017/05/31(水) 12:15:57.63 ID:u9qpXxTe.net]
- >>138
仕事内容にもよるけどそんな事はない なんせ世の中にはExcelのデータが糞ほどあるので 「Excelルールのcsvを正規表現で処理する+α」の仕事だけでも たぶんそこらのリーマンよりは稼がせてもらってきたよ 日本の企業の大半は中小企業なわけだけど ほんと信じられないほど無駄な事やってる会社がたくさんあるからね こんな時間に2chなんてやってられるのも、そのお陰ですわ
- 143 名前:デフォルトの名無しさん mailto:sage [2017/05/31(水) 12:35:12.54 ID:MQUo5X9j.net]
- 万能な処理って得てして使いにくいしな
- 144 名前:デフォルトの名無しさん [2017/05/31(水) 12:44:32.50 ID:gy6WrZsR.net]
- >>138
Rubyを使うべき、と言う唐突な結論以外は同意できる。 Ruby (のようなスクリプト)を使うべきなら完全に同意できたのに。
- 145 名前:デフォルトの名無しさん [2017/05/31(水) 16:04:23.05 ID:jFN45aLj.net]
- >>142
少し日本語は下手だが、 事前にCSV の方言・規格を確定すべし という主張と読んだ。
- 146 名前:デフォルトの名無しさん mailto:sage [2017/05/31(水) 17:04:05.88 ID:MQUo5X9j.net]
- なぜrubyなのかよく分からん
多少正規表現エンジンの種類やバージョンの違いはあれど 正規表現はperlでもPHPでもJavaScriptでもPythonでも使えるし rubyの正規表現なんて昔はコールバック処理するのがくそ面倒だった筈だが
- 147 名前:デフォルトの名無しさん mailto:sage [2017/05/31(水) 17:10:42.06 ID:BtqSGsFQ.net]
- 正規表現を使わずにrubyでやれと言いたいのでは
まあ確かにrubyは標準で簡単強力なcsv処理ができるけど ruby以外でのcsvの処理の仕方を知らない知識不足な人の戯言にしか見えない
- 148 名前:デフォルトの名無しさん mailto:sage [2017/05/31(水) 17:29:50.80 ID:nyiBm3r5.net]
- excelでも正規表現使えるけどな
- 149 名前:デフォルトの名無しさん mailto:sage [2017/05/31(水) 17:55:47.82 ID:b1E/NNUq.net]
- >>144
たぶんrubyのような言語と言いたかったのだと推察致しまする
- 150 名前:デフォルトの名無しさん [2017/06/01(木) 04:08:09.64 ID:+TrYOuL5.net]
- >>134
VB(今時は.NET)では入力チェックとかでよく使うからお前の偏見だよ。
- 151 名前:デフォルトの名無しさん [2017/06/01(木) 04:08:53.15 ID:+TrYOuL5.net]
- >>134
いい忘れたがサクラのマクロもよく使う。
- 152 名前:デフォルトの名無しさん mailto:sage [2017/06/01(木) 05:13:28.59 ID:gHUhkzd0.net]
- >>148
VBやってるやつが皆そうやってると思うか? それこそ偏見だ
- 153 名前:デフォルトの名無しさん mailto:sage [2017/06/01(木) 05:24:23.62 ID:gHUhkzd0.net]
- >>149
お前個人の話かよ
- 154 名前:デフォルトの名無しさん mailto:sage [2017/06/01(木) 05:39:57.85 ID:pPoV2n06.net]
- そもそもテキスト処理じゃないと使わんよ
使う使う言う奴はプログラミングの分野が偏ってるんじゃないか?
- 155 名前:デフォルトの名無しさん mailto:sage [2017/06/01(木) 06:10:29.36 ID:htPbJpjE.net]
- エンドユーザーに近い分野で使うというより、開発者が使うものでしょ。SQLとかと同じ。
- 156 名前:デフォルトの名無しさん mailto:sage [2017/06/01(木) 08:16:36.86 ID:YbQp1MN1.net]
- >>153
そりゃプログラムから使うものだから開発者しか使わんよ そう言う意味じゃなくて利用者が入力した値の妥当性確認とかに使うケースが多いんじゃね? って話なんだろ
- 157 名前:デフォルトの名無しさん mailto:sage [2017/06/01(木) 09:37:01.51 ID:OU3iOJ/C.net]
- >>148
これが偏見な
- 158 名前:デフォルトの名無しさん mailto:sage [2017/06/01(木) 10:35:10.56 ID:Fkhc5exB.net]
- エマ中尉の盾になって死んだ人?
- 159 名前:デフォルトの名無しさん mailto:sage [2017/06/01(木) 12:16:30.24 ID:o/dQD8LP.net]
- >>154
特殊な例を一般化するのはよくない
- 160 名前:デフォルトの名無しさん mailto:sage [2017/06/01(木) 12:52:26.55 ID:YbQp1MN1.net]
- >>157
特殊? そう言うなら他にもっと使われてる用途挙げてくれ
- 161 名前:デフォルトの名無しさん mailto:sage [2017/06/01(木) 12:55:42.58 ID:uSxzswpP.net]
- 検索じゃろ
grep然りsed然りエディタの検索然り
- 162 名前:デフォルトの名無しさん mailto:sage [2017/06/01(木) 20:45:19.78 ID:YbQp1MN1.net]
- >>159
その辺りもエンドユーザー(多くは開発者だと思うけど)に近いところじゃね?
- 163 名前:デフォルトの名無しさん mailto:sage [2017/06/01(木) 21:36:20.85 ID:z/dTvzRJ.net]
- 一般に正規表現自体をどこで使うかの話と違うんか?
プログラマがどこで使うかって文脈に限定してるのんか?
- 164 名前:デフォルトの名無しさん mailto:sage [2017/06/02(金) 00:26:45.39 ID:ixZw1vso.net]
- perlがそうであったようにログ読んだり整形したりするときにも良く使う。システム管理者。
プログラマによっては無理に正規表現使わないで正規表現を引数に取らないcontainとか複数行で書くって人もいるんじゃないか。入力チェックもそんな考えるような正規表現の出番少ないような。 perlくらい言語に組み込まれてるならともかく。
- 165 名前:デフォルトの名無しさん mailto:sage [2017/06/02(金) 01:15:51.17 ID:ZbzhojDH.net]
- >>156
ヘンケン艦長〜!
- 166 名前:デフォルトの名無しさん mailto:sage [2017/06/02(金) 14:02:59.19 ID:s9L+1vWi.net]
- 正規表現、難しいですね…全然わかりません
お知恵をおかし下さい 例えば test = "//abc"; // コメント "です" という一行があった場合、後半の // コメント "です" にだけマッチする正規表現はどのように書いたらいいんでしょうか? 最初は /(?!.*(\"|\'))\/\/(.*)/ こんなカンジで否定的先読みを利用していたのですが、 コメント部にも、 シングル及びダブルクォーテーションが入る可能性が出てきたので、 この書き方では ?! で否定しているためなのかマッチ出来ません。 何か良い書き方はありますでしょうか? やりたい事は、PHPなどで、javascriptのソースから単一行のコメントを削除したいです。 よろしくお願い致します。
- 167 名前:デフォルトの名無しさん mailto:sage [2017/06/02(金) 14:24:22.46 ID:zHTMhHhl.net]
- //((?!//).)*?$
- 168 名前:デフォルトの名無しさん [2017/06/02(金) 20:31:58.40 ID:KFrvDlYH.net]
- PHP は知らん
$perl -ne 'm%((?:\".*?\"|/(?!/)|[^/])*)(.*)% ; printf("<$1> <$2>\n");' test = "//abc"; // コメント "です" <test = "//abc"; > <// コメント "です"> // コメント "です" <> <// コメント "です"> $
- 169 名前:デフォルトの名無しさん mailto:sage [2017/06/02(金) 21:10:46.42 ID:yyLeCvfJ.net]
- 末尾方向から、// を探して、もしあれば、その行を選択する。
^.*\/\/(ここに、2連続以上の、/ が存在しない)$ /// 例えば、3連続でも、コメント扱いするよな? test = "///abc"; /// コメント "です" シングルクォーテーションは、どうするんだ? test = '///abc'; /// コメント "です"
- 170 名前:デフォルトの名無しさん mailto:sage [2017/06/02(金) 23:18:34.61 ID:cODXM6Ca.net]
- javascriptだから、シングルダブルは同等機能
"'"とか'"'とか有だし "\""とかのエスケープもある "//abc"は文字列だし、"\""//abc"はコメント
- 171 名前:デフォルトの名無しさん mailto:sage [2017/06/03(土) 00:22:48.22 ID:02UJhjHA.net]
- みなさん、ありがとう御座います!
165さんの短いのでサクっと出来ました! なるほど、末尾から検索をかけるとう考えなんですね。 本当に奥が深くて、使いこなすのは難しいです… いろんなパターンを作りだし、自由にマッチ出来るよう精進します >165-167さん、ありがとう御座いました!
- 172 名前:デフォルトの名無しさん mailto:sage [2017/06/03(土) 00:23:37.51 ID:02UJhjHA.net]
- >168さん抜けちゃいました(汗
ありがとう御座いました!
- 173 名前:165 mailto:sage [2017/06/03(土) 01:16:11.91 ID:janVI+9u.net]
- >>169
ツッコミか逆ギレ待ちだったんだが… 165ではコメントが無くてコード中に//がある場合にそのコードの部分にマッチする 削除だとコードを削ってしまうよ コード中に//が無い場合、またはコード中に//がある場合にその後ろにコメント行がある場合、限定 マトモなのは「JS コメント 正規表現」とかのワードでggr
- 174 名前:デフォルトの名無しさん mailto:sage [2017/06/03(土) 01:49:01.34 ID:VDeCcObx.net]
- s#((?:"(?:\\\\|\\"|[^"])*+"|'(?:\\\\|\\'|[^'])*+'|/(?!/)|[^/])*+)(.*)#<$1>\t<$2>#
- 175 名前:デフォルトの名無しさん mailto:sage [2017/06/03(土) 02:57:17.44 ID:02UJhjHA.net]
- >>171
え!? 限定的なテストで、思ったとおりの動きをしたので、おお!すげー!って思ってました… 実際のスクリプトには、まだ組み込んでないので気付きませんでした 他の方が書かれてた方法も試したり、ググってみますね
- 176 名前:デフォルトの名無しさん mailto:sage [2017/06/03(土) 04:51:38.86 ID:ZUxfcpWv.net]
- 区切り記号 ; や閉じ括弧 } のあとにスペースかタブいくつかの後に来る // から行末をコメントと見なすのが簡単?
- 177 名前:デフォルトの名無しさん mailto:sage [2017/06/03(土) 12:52:21.44 ID:7vig672V.net]
- コメント化は、プログラムデバッグ中にも命令を無効にするために使うこともあるし、ことはそう簡単じゃないよ
//if(hoge=="hoge.net") {//コメント
- 178 名前:デフォルトの名無しさん [2017/06/03(土) 14:13:52.35 ID:ep62Y9tf.net]
- これは、無限の組み合わせがあるから、正規表現じゃ無理
AST変換とか、LLVMでコンパイル後の命令木をもらって、 コメント部分を削除するとかしないと、自力じゃ無理なレベル
- 179 名前:デフォルトの名無しさん mailto:sage [2017/06/03(土) 14:17:50.88 ID:sCohk93m.net]
- うむ
- 180 名前:デフォルトの名無しさん mailto:sage [2017/06/03(土) 14:32:23.81 ID:7vig672V.net]
- こんな場合もあるからね
/* 一行コメントを外す //*/hoge="abc";
- 181 名前:デフォルトの名無しさん mailto:sage [2017/06/03(土) 14:42:13.81 ID:mWYP1opd.net]
- 文脈自由言語の領域か
- 182 名前:デフォルトの名無しさん mailto:sage [2017/06/03(土) 16:26:56.85 ID:kz1iKZuq.net]
- テキストから
06/03( を抽出する場合、どんな表現になりますか?
|

|