Regular Expressionスレです。
質問する場合は必ず実装言語や処理系ソフトウェア名を示してください。
前スレ
Regular Expression(正規表現) Part14
https://mevius.5ch.net/test/read.cgi/tech/1489511075/
次スレは>>980宜しく
天ぷら等>>2以降
Regular Expression(正規表現) Part15
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2019/09/16(月) 22:25:11.87ID:enU8we0d100デフォルトの名無しさん
2020/01/14(火) 22:34:44.82ID:kxfWTRop ^(?!.*バスケ)(?=.*キャプテン)(?=.*太郎).*
101デフォルトの名無しさん
2020/01/15(水) 00:24:06.58ID:qFZTgD7k 'あ'.match(/[あ゙い゙ゔえ゙お゙]/u)
(環境依存文字ですが、[]の中身は濁点つきの「あいうえお」です)
'あ'は濁点なしなのでマッチさせたくないのですがしてしまいます
これってマッチしないようにする方法はないですか?
JavaScriptです
(環境依存文字ですが、[]の中身は濁点つきの「あいうえお」です)
'あ'は濁点なしなのでマッチさせたくないのですがしてしまいます
これってマッチしないようにする方法はないですか?
JavaScriptです
102101
2020/01/15(水) 00:30:34.00ID:qFZTgD7k103デフォルトの名無しさん
2020/01/15(水) 12:08:15.81ID:lFvJ7mPZ ^(?!.*バスケ(?!ット(?!ボール(?!選手)))).*
バスケ ←不一致
バスケット ←一致
バスケットボール ←不一致
バスケットボール選手 ←一致
太郎はバスケットボール選手としてバスケ部に入部している ←不一致
太郎はバスケットボール選手としてバスケット部に入部している ←一致
バスケ ←不一致
バスケット ←一致
バスケットボール ←不一致
バスケットボール選手 ←一致
太郎はバスケットボール選手としてバスケ部に入部している ←不一致
太郎はバスケットボール選手としてバスケット部に入部している ←一致
104デフォルトの名無しさん
2020/01/15(水) 14:36:24.87ID:mWwHDwCD んなことよりバスケやろうぜ
105デフォルトの名無しさん
2020/02/09(日) 22:06:03.00ID:XBEo77KP マッチしたカッコ内の文字列をを利用する方法ってどうやるんでしたか?
http://hogehoge.jp
http://(.*).jp
このアスタリスクの部分を利用するのはどうやるんでしたかね
t1ではないです
http://hogehoge.jp
http://(.*).jp
このアスタリスクの部分を利用するのはどうやるんでしたかね
t1ではないです
106デフォルトの名無しさん
2020/02/09(日) 22:18:21.72ID:6++kPC7v107デフォルトの名無しさん
2020/02/09(日) 22:22:12.18ID:XBEo77KP $1ですねどうも
108デフォルトの名無しさん
2020/02/09(日) 22:34:23.16ID:XBEo77KP 同じ行にあるurlにhrefを加える正規表現はどうするのでしょうか
http://hoge1.jp http://hoge2.jp
↑これを
<a href="http://hoge1.jp">http://hoge1.jp</a> <a href="http://hoge2.jp">http://hoge2.jp</a>
こうしたいです
1つだけならこうできます
http://(.*).jp
http://hoge1.jp http://hoge2.jp
↑これを
<a href="http://hoge1.jp">http://hoge1.jp</a> <a href="http://hoge2.jp">http://hoge2.jp</a>
こうしたいです
1つだけならこうできます
http://(.*).jp
109デフォルトの名無しさん
2020/02/09(日) 22:34:49.85ID:XBEo77KP http://$1.jp
を忘れていました
を忘れていました
110デフォルトの名無しさん
2020/02/10(月) 14:37:14.41ID:8D13KkA5 正規表現よりも、HTML パーサーの方がよい。
Ruby のnokogiri で、HTML をパースすると、
require 'nokogiri'
doc = Nokogiri::HTML(<<EOT)
<html><body>
<a href="http://hoge1.jp">http://hoge1.jp</a>
<a href="http://hoge2.jp">http://hoge2.jp</a>
</body></html>
EOT
elements = doc.css( "a" )
# 属性・テキスト
elements.each { |elem| puts elem.get_attribute( "href" ), elem.text }
出力
http://hoge1.jp
http://hoge1.jp
http://hoge2.jp
http://hoge2.jp
Ruby のnokogiri で、HTML をパースすると、
require 'nokogiri'
doc = Nokogiri::HTML(<<EOT)
<html><body>
<a href="http://hoge1.jp">http://hoge1.jp</a>
<a href="http://hoge2.jp">http://hoge2.jp</a>
</body></html>
EOT
elements = doc.css( "a" )
# 属性・テキスト
elements.each { |elem| puts elem.get_attribute( "href" ), elem.text }
出力
http://hoge1.jp
http://hoge1.jp
http://hoge2.jp
http://hoge2.jp
111デフォルトの名無しさん
2020/02/10(月) 18:02:57.53ID:cKG4UD69112デフォルトの名無しさん
2020/02/11(火) 07:15:58.31ID:Kcy+Q8b9 >>108
.jpが末尾につく行がリンクだと仮定してjavascript
/^(.+\.jp)$/gm
上記の正規表現で
<a hef=“http://$1”>http://$1</a>
正規表現のフラグのmで複数行対応、gで複数の結果で対応出来ん?
.jpが末尾につく行がリンクだと仮定してjavascript
/^(.+\.jp)$/gm
上記の正規表現で
<a hef=“http://$1”>http://$1</a>
正規表現のフラグのmで複数行対応、gで複数の結果で対応出来ん?
113デフォルトの名無しさん
2020/02/11(火) 13:30:47.89ID:yXLnwJ70 (https?://\S+)
<a href=“\1”>\1</a>
<a href=“\1”>\1</a>
114デフォルトの名無しさん
2020/02/12(水) 09:21:48.77ID:iIu6BAwU 1) (hoge)
2) (hoge, fuga)
3) (hoge, fuga, piyo)
2) のみにマッチする正規表現のご教示よろしくお願いいたします
鬼雲
2) (hoge, fuga)
3) (hoge, fuga, piyo)
2) のみにマッチする正規表現のご教示よろしくお願いいたします
鬼雲
115デフォルトの名無しさん
2020/02/12(水) 10:28:49.15ID:bUEb5r3d hogeとfugaを後で使うと仮定して
\((.+),(.+)\)
\((.+),(.+)\)
116デフォルトの名無しさん
2020/02/12(水) 10:51:06.48ID:NK/UnlDo >>115
それだと3)にもマッチするよ
それだと3)にもマッチするよ
117デフォルトの名無しさん
2020/02/12(水) 11:05:14.78ID:W9U9giTl >>114
a\)
a\)
118デフォルトの名無しさん
2020/02/12(水) 15:06:59.76ID:bUEb5r3d .を[^,]でどう?
119デフォルトの名無しさん
2020/02/12(水) 15:37:27.75ID:iIu6BAwU ID:bUEb5r3d 様
ありがとうございました。m(_ _)m
「\([^,]*,[^,]*?\)」で希望動作になりました
ありがとうございました。m(_ _)m
「\([^,]*,[^,]*?\)」で希望動作になりました
120デフォルトの名無しさん
2020/02/12(水) 18:44:57.81ID:bUEb5r3d どういたしまして。
ちなみに+じゃなくて*にしてるのは
(,)
にも一致させたいという事?
あと?は無くても動かん?
ちなみに+じゃなくて*にしてるのは
(,)
にも一致させたいという事?
あと?は無くても動かん?
121デフォルトの名無しさん
2020/02/12(水) 18:51:28.08ID:gdzQpnag [^,]*だと改行と閉じ括弧を含んでしまい
次の行まで選択してしまうのでは?
次の行まで選択してしまうのでは?
122デフォルトの名無しさん
2020/02/12(水) 19:37:56.96ID:bUEb5r3d 確かにこんなデータも想定するとアウトやね
((hoge,huga)piyo)
改行はオプション次第だね
((hoge,huga)piyo)
改行はオプション次第だね
123デフォルトの名無しさん
2020/02/18(火) 23:17:54.25ID:TkHg8SjE 指定した2つの文字XYの間がn文字以下(0を含む)にマッチする検索方法教えてください
マッチ例n=3
XY
XaY
XabcY
NG
XabcdY
マッチ例n=3
XY
XaY
XabcY
NG
XabcdY
124デフォルトの名無しさん
2020/02/18(火) 23:50:11.22ID:rgk/DkAY X.{0,3}Y
とかかな、試してないけど
とかかな、試してないけど
125デフォルトの名無しさん
2020/02/19(水) 00:18:10.76ID:Y6/DCNeg >>124
ありがとうございます
ありがとうございます
126デフォルトの名無しさん
2020/02/24(月) 14:31:40.12ID:iLDNrypx ●Regular Expressionの使用環境
実際に使う環境は不明ですが、まずはサクラエディタで試そうと思います。
●検索か置換か?
検索。マッチ部分を抽出できる必要はなく、含むかだけわかれば良いです。
●説明
文章(サクラは複数行NGとのことなので、今は1行)の中に「市」という文字が入っているかを判定したいです。
しかし、「横浜市」のような地名が入っているかを判定したいので、「巨大都市」「姉妹都市」のような特定のワードは排除したいです。
>>103の前後が逆のパターンになると思うのですが、単純に「^(?!.*(?!(?!巨大都|姉妹都)市)).*」とすると何もマッチしなくなってしまいます。
(そもそも「^(?!.*(?!ット(?!ボール))).*」の時点で「バスケット」にマッチしません)
●対象データ・希望する結果
ここは巨大都市だ
(マッチなし)
ここは横浜市だ
^
ここは巨大都市の横浜市だ
^
実際に使う環境は不明ですが、まずはサクラエディタで試そうと思います。
●検索か置換か?
検索。マッチ部分を抽出できる必要はなく、含むかだけわかれば良いです。
●説明
文章(サクラは複数行NGとのことなので、今は1行)の中に「市」という文字が入っているかを判定したいです。
しかし、「横浜市」のような地名が入っているかを判定したいので、「巨大都市」「姉妹都市」のような特定のワードは排除したいです。
>>103の前後が逆のパターンになると思うのですが、単純に「^(?!.*(?!(?!巨大都|姉妹都)市)).*」とすると何もマッチしなくなってしまいます。
(そもそも「^(?!.*(?!ット(?!ボール))).*」の時点で「バスケット」にマッチしません)
●対象データ・希望する結果
ここは巨大都市だ
(マッチなし)
ここは横浜市だ
^
ここは巨大都市の横浜市だ
^
127デフォルトの名無しさん
2020/02/24(月) 14:48:12.43ID:iQYTd9Fe129デフォルトの名無しさん
2020/03/21(土) 15:01:32.98ID:Ycs9n4/m どなたか教えてください。0が含まれる行のみ/以降を削除したいです。
(処理前)
2/3004
67//1
503/11/4
4/6/978
(処理後)
2
67//1
503
4/6/978
実際の文字列は数字とは限りません。可能かわかりませんがどうぞお願いします。
(処理前)
2/3004
67//1
503/11/4
4/6/978
(処理後)
2
67//1
503
4/6/978
実際の文字列は数字とは限りません。可能かわかりませんがどうぞお願いします。
130デフォルトの名無しさん
2020/03/21(土) 16:32:31.37ID:S0XSDbOV >>129
使用環境も書きましょう。
プログラミング言語かテキストエディタかでも大分違ってきますし。
スルーされにくい質問のテンプレと例
●Regular Expressionの使用環境
Java1.5
●検索か置換か?
検索
●説明
各行の1番目のAまでを検索したい
●対象データ
ABCA
BCAA
CABA
●希望する結果
ABCA
^
BCAA
^^^
CABA
^^
※ ^ はアンダーラインだそうな ^^;
使用環境も書きましょう。
プログラミング言語かテキストエディタかでも大分違ってきますし。
スルーされにくい質問のテンプレと例
●Regular Expressionの使用環境
Java1.5
●検索か置換か?
検索
●説明
各行の1番目のAまでを検索したい
●対象データ
ABCA
BCAA
CABA
●希望する結果
ABCA
^
BCAA
^^^
CABA
^^
※ ^ はアンダーラインだそうな ^^;
131デフォルトの名無しさん
2020/03/21(土) 16:58:05.15ID:iWBNd/W/ ^(?=.*0)([^/]*).*$
\1
\1
132デフォルトの名無しさん
2020/03/21(土) 18:17:29.30ID:Ycs9n4/m133デフォルトの名無しさん
2020/03/22(日) 11:16:42.62ID:nQo0XPUd ●Regular Expressionの使用環境
VisualWorks 7.7NC Regex11パーセル
●検索か置換か?
検索
●説明
jpgファイルの連番部分を取り出したい
なお正規表現にいくつか制約があります
先読みと後読みはできません (?= (?! (?<= (?<! などが未実装
最小一致も実装されていません
グループやキャプチャは可能です
'.*:^isDigit:(:isDigit:+)¥.(:isAlphabetic:+)$' asRegex. などとやっていましたが
これだと3333.jpgなどのパターンに対応できないので
'.*:^isDigit:?(:isDigit:+)¥.(:isAlphabetic:+)$' asRegex.
とやるとそもそもマッチしません
正規表現だけでやるうまい方法が見出せませんでした
isDigitは ¥d
isAlphabeticは [a-z] と読み替えできます
●対象データ
0000_1111_2222_3333.jpg
_0000_1111_2222_3333.jpg
3333.jpg
●希望する結果
3333
3333
3333
VisualWorks 7.7NC Regex11パーセル
●検索か置換か?
検索
●説明
jpgファイルの連番部分を取り出したい
なお正規表現にいくつか制約があります
先読みと後読みはできません (?= (?! (?<= (?<! などが未実装
最小一致も実装されていません
グループやキャプチャは可能です
'.*:^isDigit:(:isDigit:+)¥.(:isAlphabetic:+)$' asRegex. などとやっていましたが
これだと3333.jpgなどのパターンに対応できないので
'.*:^isDigit:?(:isDigit:+)¥.(:isAlphabetic:+)$' asRegex.
とやるとそもそもマッチしません
正規表現だけでやるうまい方法が見出せませんでした
isDigitは ¥d
isAlphabeticは [a-z] と読み替えできます
●対象データ
0000_1111_2222_3333.jpg
_0000_1111_2222_3333.jpg
3333.jpg
●希望する結果
3333
3333
3333
134デフォルトの名無しさん
2020/03/22(日) 11:49:39.63ID:feI8vnc9 0000などは連番扱いされないの?
135デフォルトの名無しさん
2020/03/22(日) 11:55:19.77ID:zGmYOqdI136デフォルトの名無しさん
2020/03/22(日) 12:16:09.69ID:loDgnmn0 ファイル名の最後の数字部分だけ取りたいなら (\d+).jpg とかじゃ駄目なん?
137デフォルトの名無しさん
2020/03/22(日) 12:33:09.14ID:zGmYOqdI >>133
そもそも :^isDigit: の前に .*は必要?
そもそも :^isDigit: の前に .*は必要?
138デフォルトの名無しさん
2020/03/22(日) 12:39:04.69ID:nQo0XPUd139デフォルトの名無しさん
2020/03/22(日) 12:41:01.29ID:nQo0XPUd >>136
試しましたがマッチしません
試しましたがマッチしません
140デフォルトの名無しさん
2020/03/22(日) 12:43:52.41ID:nQo0XPUd 書き忘れましたが
ファイル名だけでなくファイルパスを含む場合があります・・
ex.
/a/b/c/d/_0000_1111_2222_3333.jpg
3333.jpgのようなパターンさえなければ対応できているのですが
これが来た場合にうまくいきません
ファイル名だけでなくファイルパスを含む場合があります・・
ex.
/a/b/c/d/_0000_1111_2222_3333.jpg
3333.jpgのようなパターンさえなければ対応できているのですが
これが来た場合にうまくいきません
141デフォルトの名無しさん
2020/03/22(日) 13:22:29.93ID:ilL19jCu142デフォルトの名無しさん
2020/03/22(日) 13:27:20.03ID:nQo0XPUd >>141
エスケープ付けてテストしてあります
エスケープ付けてテストしてあります
143デフォルトの名無しさん
2020/03/22(日) 13:29:10.24ID:aG3rJm5+ >>140
(/a/b/c/d/_0000_1111_2222_)?3333.jpg
(/a/b/c/d/_0000_1111_2222_)?3333.jpg
144デフォルトの名無しさん
2020/03/22(日) 13:33:55.99ID:nQo0XPUd >>143
マッチします
マッチします
145デフォルトの名無しさん
2020/03/22(日) 13:53:17.55ID:7GTLasBi146デフォルトの名無しさん
2020/03/22(日) 14:25:12.02ID:HpFFHFhU JavaScript なら、これで一致するので、
キャプチャー部分だけを取り出す
var re = /(\d+)\.jpg/g;
キャプチャー部分だけを取り出す
var re = /(\d+)\.jpg/g;
147デフォルトの名無しさん
2020/03/22(日) 14:31:11.47ID:loDgnmn0 文字列の先頭からしかマッチできないんなら .*(\d+).jpg でいいんじゃね
ルールがローカルすぎてよくわからんが
ルールがローカルすぎてよくわからんが
148デフォルトの名無しさん
2020/03/22(日) 14:42:52.35ID:I5Su+SV6149デフォルトの名無しさん
2020/03/22(日) 14:50:15.15ID:loDgnmn0 (.*[^\d])?(\d+)\.jpg
150デフォルトの名無しさん
2020/03/22(日) 15:07:09.29ID:nQo0XPUd151デフォルトの名無しさん
2020/03/22(日) 15:21:27.08ID:H4vT0xhv (.*[^\d])?(\d+)\.jpe?g
\2
\2
152デフォルトの名無しさん
2020/03/22(日) 15:30:56.06ID:nQo0XPUd 一通り検査して全てパスできました
皆様ありがとうございました
それにしてもうまい方法があるものですね勉強になります・・
皆様ありがとうございました
それにしてもうまい方法があるものですね勉強になります・・
153デフォルトの名無しさん
2020/03/22(日) 21:42:28.57ID:hAKSIWAv >>133を見て何が何だかだわ
皆さんスゲーな
皆さんスゲーな
154デフォルトの名無しさん
2020/03/23(月) 07:21:58.66ID:jGS2rL5b VSCode なら、Regex Previewer という拡張機能がある
JavaScript, PHP の正規表現をテストできる
JavaScript, PHP の正規表現をテストできる
155デフォルトの名無しさん
2020/04/09(木) 01:23:43.84ID:o0bB5yvE 正規表現の段位、級位みたい試験があると転職に役立つかな
正規表現3段所持みたいな
試験問題はほとんどパズルだな
当方は頭悪いので、複数の単純な正規表現使用派
正規表現3段所持みたいな
試験問題はほとんどパズルだな
当方は頭悪いので、複数の単純な正規表現使用派
156デフォルトの名無しさん
2020/04/09(木) 14:34:47.92ID:67/p/Sga 正規表現必須!てな現場もそうそう無いだろうし
使えて当たり前、だけど高度過ぎる常人に思い付けないようなものが必要になる場面もまず無いだろうし
そうなったら出来る奴に丸投げすりゃいいし
プログラム内なら全て正規表現任せにせずに前処理した方が良いケースも多々あるからそれ絡めてのスキルだと思うし
方言が多い事や解が複数あり得る事も試験化には問題
マークシート選択方式では引っ掛け問題ばかりになるだろうし何か違う気がする
資格化したところで精々、文系脳の奴がどれだけ論理思考が出来るか?の目安とか雑なIQ判定くらいにしか役立ちそうにない
義務教育内でこんなのあるよ程度に最低限くらいは教えておいて欲しいけど資格化までは疑問かな
使えて当たり前、だけど高度過ぎる常人に思い付けないようなものが必要になる場面もまず無いだろうし
そうなったら出来る奴に丸投げすりゃいいし
プログラム内なら全て正規表現任せにせずに前処理した方が良いケースも多々あるからそれ絡めてのスキルだと思うし
方言が多い事や解が複数あり得る事も試験化には問題
マークシート選択方式では引っ掛け問題ばかりになるだろうし何か違う気がする
資格化したところで精々、文系脳の奴がどれだけ論理思考が出来るか?の目安とか雑なIQ判定くらいにしか役立ちそうにない
義務教育内でこんなのあるよ程度に最低限くらいは教えておいて欲しいけど資格化までは疑問かな
157デフォルトの名無しさん
2020/04/09(木) 18:11:21.90ID:AINw40ik >>156
君は正規表現の前に日本語の義務教育受けてこいw
君は正規表現の前に日本語の義務教育受けてこいw
158デフォルトの名無しさん
2020/04/09(木) 21:20:08.08ID:HMI1Vo9o 日本語力に特段問題があるようには見えないが
159デフォルトの名無しさん
2020/04/09(木) 21:34:35.21ID:+PEAWxOJ 俺もちゃんと何言ってるのか分かったし、特に読んでて疑問も覚えなかったね
160デフォルトの名無しさん
2020/04/09(木) 22:20:15.44ID:zOdaCiQO 文章がくどいとは思う
161デフォルトの名無しさん
2020/04/09(木) 22:26:46.58ID:BSAQTOUE 難題を解決したらあいつスゲーなとなるけど
なかなかその機会が訪れないよな
なかなかその機会が訪れないよな
162デフォルトの名無しさん
2020/04/09(木) 23:07:21.92ID:+PEAWxOJ >>160
くどいというより接続詞で繋げすぎだね
くどいというより接続詞で繋げすぎだね
163デフォルトの名無しさん
2020/04/10(金) 05:35:38.69ID:OHa28c9H 論文とかの文章ならどうかと思うけど
こういう掲示板での改行の仕方とか含めての表現では
別に問題ないよなと思った
こういう掲示板での改行の仕方とか含めての表現では
別に問題ないよなと思った
164デフォルトの名無しさん
2020/04/10(金) 07:01:05.28ID:ZlkuoHXS 義務教育やり直せレベルにはみえない
雑文としては意味が通じないような文では無いだろう
157の日本語力が低杉なんじゃ?
雑文としては意味が通じないような文では無いだろう
157の日本語力が低杉なんじゃ?
165デフォルトの名無しさん
2020/04/10(金) 08:59:24.36ID:sn6MPl7m >>161
パズルとしてはいいけど業務でやられると保守できなくなるしな
パズルとしてはいいけど業務でやられると保守できなくなるしな
166デフォルトの名無しさん
2020/04/10(金) 09:02:57.81ID:sn6MPl7m >>157フルボッコw
最初の方で「~し」を多用してるのがちょいウザいけど内容的にはまあ頷けるわな
最初の方で「~し」を多用してるのがちょいウザいけど内容的にはまあ頷けるわな
167デフォルトの名無しさん
2020/04/10(金) 11:44:30.56ID:BcRc61MP168デフォルトの名無しさん
2020/04/10(金) 14:42:19.38ID:k/YdHOe5 そもそも問題が複雑だから複雑な正規表現になってしまうのでは?
そういう場合はそいつじゃないとできないという状況になってしまうこともありうる
そういう場合はそいつじゃないとできないという状況になってしまうこともありうる
169デフォルトの名無しさん
2020/04/10(金) 15:00:43.02ID:71OQfeOs うん、そういう場合もあると思うけど
多くの人はそもそも正規表現で解決出来るかもという発想がなくて
手間と時間をかけて頑張るか、その仕事を断る
そんな場合が多い気がする
多くの人はそもそも正規表現で解決出来るかもという発想がなくて
手間と時間をかけて頑張るか、その仕事を断る
そんな場合が多い気がする
170デフォルトの名無しさん
2020/04/10(金) 15:25:33.75ID:BcRc61MP まあbison/flex使って片付けてたらそれはやめてくれとも言われたこともあるしな
引き継げないだろと
引き継げないだろと
171デフォルトの名無しさん
2020/04/10(金) 16:34:01.15ID:sn6MPl7m172デフォルトの名無しさん
2020/04/10(金) 23:03:46.23ID:ALVzSQYS 頑張りすぎちゃって誰もメンテできないような手に負えないSQLってたまに出くわすけど、
それと同じような要領で頑張りすぎちゃって誰もメンテできないような正規表現が出てきたら・・・・
自分だったらSQLのときよりもさらに全力で逃げ出すかなあ
正規表現ってただでさえ魔法のような暗号文化しがちだし(後で読解に困ることも多いし)
仕様を簡潔明瞭にコードに落とし込むスキルがないダメプログラマが
力技で正規表現ゴリゴリ書くことを考えるとかなりの恐怖
エスアイアーの現場ならむしろ安全のため正規表現全面禁止にしておくほうがマシなんじゃなかろうか
それと同じような要領で頑張りすぎちゃって誰もメンテできないような正規表現が出てきたら・・・・
自分だったらSQLのときよりもさらに全力で逃げ出すかなあ
正規表現ってただでさえ魔法のような暗号文化しがちだし(後で読解に困ることも多いし)
仕様を簡潔明瞭にコードに落とし込むスキルがないダメプログラマが
力技で正規表現ゴリゴリ書くことを考えるとかなりの恐怖
エスアイアーの現場ならむしろ安全のため正規表現全面禁止にしておくほうがマシなんじゃなかろうか
173デフォルトの名無しさん
2020/04/11(土) 00:23:01.95ID:yLiBv2Sb 三項演算子でも同じ問題あるね
可読性と簡潔性は必ずしも両立しない
可読性と簡潔性は必ずしも両立しない
174デフォルトの名無しさん
2020/04/11(土) 00:37:32.49ID:aIl7Qg1V 仕様がわかっていれば
ちゃんとしたドキュメントが残っていれば何とでもなる
暗号をわかりやすいプログラムに変換可能だから
とりあえず動いているので触りたくないというのどうにもならない
それはそのプログラムが近い将来破綻することを意味する
ちゃんとしたドキュメントが残っていれば何とでもなる
暗号をわかりやすいプログラムに変換可能だから
とりあえず動いているので触りたくないというのどうにもならない
それはそのプログラムが近い将来破綻することを意味する
175デフォルトの名無しさん
2020/04/11(土) 01:03:41.61ID:Ni1vKiQd176デフォルトの名無しさん
2020/04/11(土) 05:53:16.03ID:qQ/s2VQN >>175
あーあーそれはなんか分かる・しっくり来るな。完全同意だわ。
あーあーそれはなんか分かる・しっくり来るな。完全同意だわ。
177デフォルトの名無しさん
2020/04/11(土) 09:32:41.81ID:Qk2+GLy8 >>175
でもそれって正規表現使っているか否かに関わらず本来なされているべきことだよね
正規表現とか特定の機能を使ってるところだけ特別扱いしてドキュメントやテスト仕様を残させるとか
絶対サボる人が出てきそう
でもってサボったところに限って誰も直せないようなクソコードと化すパターン
でもそれって正規表現使っているか否かに関わらず本来なされているべきことだよね
正規表現とか特定の機能を使ってるところだけ特別扱いしてドキュメントやテスト仕様を残させるとか
絶対サボる人が出てきそう
でもってサボったところに限って誰も直せないようなクソコードと化すパターン
178デフォルトの名無しさん
2020/04/11(土) 16:30:10.27ID:Ni1vKiQd >>177
仕様の分かるテストケースってのはテストコードのことね
正規表現は作る時に必ずマッチする例とマッチしない例を書いて確認するでしょ?
それを仕様の分かるテストコードにしてセットで扱えるようにしておくってこと
コードレビュー時も正規表現だけ見てレビューしても効果薄いから
テストコードとセットでレビューする
>でもそれって正規表現使っているか否かに関わらず本来なされているべきことだよね
これはそうでもないよ
複雑なSQLの場合は仕様の分かるテストコードを一式用意するのは結構難しくて
ある範囲を超えると手間に見合わないから仕様書とSQL自体のレビューだったり手動テストで補完する
正規表現は純粋関数として扱えるのでその辺の難しさがない
仕様の分かるテストケースってのはテストコードのことね
正規表現は作る時に必ずマッチする例とマッチしない例を書いて確認するでしょ?
それを仕様の分かるテストコードにしてセットで扱えるようにしておくってこと
コードレビュー時も正規表現だけ見てレビューしても効果薄いから
テストコードとセットでレビューする
>でもそれって正規表現使っているか否かに関わらず本来なされているべきことだよね
これはそうでもないよ
複雑なSQLの場合は仕様の分かるテストコードを一式用意するのは結構難しくて
ある範囲を超えると手間に見合わないから仕様書とSQL自体のレビューだったり手動テストで補完する
正規表現は純粋関数として扱えるのでその辺の難しさがない
179デフォルトの名無しさん
2020/04/14(火) 11:27:53.60ID:uSEs8eKP 足並み揃えないと不安で死んじゃう病
180デフォルトの名無しさん
2020/04/14(火) 11:37:16.46ID:ARaCq1kB 人っていついなくなるかわからないからね
事故だったり勝手な理由で辞めたり
事故だったり勝手な理由で辞めたり
181デフォルトの名無しさん
2020/04/15(水) 10:44:15.36ID:MMPwOLF/ ●Regular Expressionの使用環境
grep (GNU grep) 2.20
●検索か置換か?
検索
●説明
今日から、14日間(位)を抜き出したい。
●対象データ
(前にもたくさん)
2020-03-14
2020-03-14
2020-03-15
2020-03-15
(中略)
2020-04-14
2020-04-14
2020-04-15
2020-04-15
(後も続く)
●希望する結果
14日前から2020-04-15を抽出できる事を希望します。
元ファイルに存在しない日付(3月33日があったり・・)などは無く、書式も必ず対象データに記載のもので出力されます。
また、30の月、31の月なども考慮しないでOKです。(できる限りシンプルな書式でお示しください)
サンプルお示しいただけたら、あとはググりながら自分で調べます。
ググったのですが、サンプルになるいい感じのシンプルな書式が見当たらず
どうにもうまく正規表現を作れずにおります。何卒宜しくお願い致します。
grep (GNU grep) 2.20
●検索か置換か?
検索
●説明
今日から、14日間(位)を抜き出したい。
●対象データ
(前にもたくさん)
2020-03-14
2020-03-14
2020-03-15
2020-03-15
(中略)
2020-04-14
2020-04-14
2020-04-15
2020-04-15
(後も続く)
●希望する結果
14日前から2020-04-15を抽出できる事を希望します。
元ファイルに存在しない日付(3月33日があったり・・)などは無く、書式も必ず対象データに記載のもので出力されます。
また、30の月、31の月なども考慮しないでOKです。(できる限りシンプルな書式でお示しください)
サンプルお示しいただけたら、あとはググりながら自分で調べます。
ググったのですが、サンプルになるいい感じのシンプルな書式が見当たらず
どうにもうまく正規表現を作れずにおります。何卒宜しくお願い致します。
182デフォルトの名無しさん
2020/04/15(水) 11:13:15.42ID:ajU4Q4+G カレンダーは西向く侍があるから正規表現単独では無理では……
183デフォルトの名無しさん
2020/04/15(水) 11:16:23.86ID:oU4wEPk/184デフォルトの名無しさん
2020/04/15(水) 11:19:34.98ID:MMPwOLF/ >>182
大体でもできないでしょうか。
と書こうと思ったときに思いつきました。。。
実行速度に問題が出るかもしれませんが、
3月15日または、3月16日または、3月17日または・・・4月15日。
って力技でやってみます・・・。
もし、ほかにも「こういう方法があるよ」って素敵なアイデアお持ちのかた
いらっしゃいましたら、ぜひレスをください。宜しくお願い致します。
大体でもできないでしょうか。
と書こうと思ったときに思いつきました。。。
実行速度に問題が出るかもしれませんが、
3月15日または、3月16日または、3月17日または・・・4月15日。
って力技でやってみます・・・。
もし、ほかにも「こういう方法があるよ」って素敵なアイデアお持ちのかた
いらっしゃいましたら、ぜひレスをください。宜しくお願い致します。
185デフォルトの名無しさん
2020/04/15(水) 11:29:40.68ID:oU4wEPk/186デフォルトの名無しさん
2020/04/15(水) 11:31:48.22ID:MMPwOLF/187デフォルトの名無しさん
2020/04/15(水) 11:48:04.80ID:oU4wEPk/188デフォルトの名無しさん
2020/04/15(水) 11:49:07.49ID:MMPwOLF/ >>183
ありがとうございます。
scriptというのが大きなヒントになり解決に至りました。
結果的にはこれでできました。
cat 対象ログファイル | awk '"2020-04-01" <= $2 && $2 < "2020-04-02"'
性器表現ばっかりにとらわれてました・・
ありがとうございます。
ありがとうございます。
scriptというのが大きなヒントになり解決に至りました。
結果的にはこれでできました。
cat 対象ログファイル | awk '"2020-04-01" <= $2 && $2 < "2020-04-02"'
性器表現ばっかりにとらわれてました・・
ありがとうございます。
189デフォルトの名無しさん
2020/04/15(水) 13:19:12.50ID:Ut6Mn670 何を言いたいのかエスパーでもわからん
オーダーはもっと正確に
オーダーはもっと正確に
190デフォルトの名無しさん
2020/04/15(水) 16:37:41.08ID:h/7T7n1i >>181
ちょっとだけややこしい検索にはawkがおすすめ
ちょっとだけややこしい検索にはawkがおすすめ
191デフォルトの名無しさん
2020/04/15(水) 16:53:34.03ID:z6xNdPvI 性器表現って(i)みたいなのだろw
192デフォルトの名無しさん
2020/04/21(火) 11:40:37.33ID:3ZBp0+Pn ●Regular Expressionの使用環境
サクラエディタ
●検索か置換か?
置き換え
●説明
pingの結果(成功)をtxtに収めたものから、
IPアドレスだけ抜き取りたい
●対象データ
Echo reply 1 from 192.168.0.1 time delay 99.999 ms
Echo reply 2 from 192.168.0.1 time delay 88.999 ms
Echo reply 1 from 192.168.0.2 time delay 88.999 ms
Echo reply 2 from 192.168.0.2 time delay 88.999 ms
以下同じように続く
●希望する結果
192.168.0.1
192.168.0.1
192.168.0.2
192.168.0.2
〇実際に得られた結果
2.168.0.1
2.168.0.1
2.168.0.2
2.168.0.2
よろしくお願いいたします。
サクラエディタ
●検索か置換か?
置き換え
●説明
pingの結果(成功)をtxtに収めたものから、
IPアドレスだけ抜き取りたい
●対象データ
Echo reply 1 from 192.168.0.1 time delay 99.999 ms
Echo reply 2 from 192.168.0.1 time delay 88.999 ms
Echo reply 1 from 192.168.0.2 time delay 88.999 ms
Echo reply 2 from 192.168.0.2 time delay 88.999 ms
以下同じように続く
●希望する結果
192.168.0.1
192.168.0.1
192.168.0.2
192.168.0.2
〇実際に得られた結果
2.168.0.1
2.168.0.1
2.168.0.2
2.168.0.2
よろしくお願いいたします。
193デフォルトの名無しさん
2020/04/21(火) 11:41:25.90ID:3ZBp0+Pn 〇使用した正規表現(置換)
.*((([0-9]{1,3}\.){3})[0-9]{1,3}).*
$1
が抜けてました
.*((([0-9]{1,3}\.){3})[0-9]{1,3}).*
$1
が抜けてました
194デフォルトの名無しさん
2020/04/21(火) 12:43:11.20ID:iVBBDkGx 今の奴を少し手直しして
.*\b(([0-9]{1,3}\.){3}[0-9]{1,3}).*
とか
.* (([0-9]{1,3}\.){3}[0-9]{1,3}).*
必ずfrom〜timeに挟まれるなら
.*from ([\d.]*) time.*
とか
.*\b(([0-9]{1,3}\.){3}[0-9]{1,3}).*
とか
.* (([0-9]{1,3}\.){3}[0-9]{1,3}).*
必ずfrom〜timeに挟まれるなら
.*from ([\d.]*) time.*
とか
195デフォルトの名無しさん
2020/04/21(火) 13:08:13.53ID:bjfyOojV196デフォルトの名無しさん
2020/04/21(火) 13:34:44.69ID:3ZBp0+Pn197デフォルトの名無しさん
2020/04/21(火) 22:38:03.26ID:alPdontK .* を [^0-9]* もしくは \D*
198デフォルトの名無しさん
2020/04/21(火) 23:03:33.07ID:J0u+GdjC 推奨はしないけど、元の奴で、.*に?を追加して
.*?((([0-9]{1,3}\.){3})[0-9]{1,3}).*
.*?((([0-9]{1,3}\.){3})[0-9]{1,3}).*
199デフォルトの名無しさん
2020/05/16(土) 15:22:19.43ID:hjibA7SH ランダムな文字列によるコピペ荒らしで
12文字中の文字が最大で6種類しかない
ようなときどうすればいいでしょうか?
(.)\1*([^\1])\2*([^\1\2])\3*([^\1\2\3])\4*([^\1\2\3\4])\5*(
[^\1\2\3\4\5])\6 (.)\1*([^\1])\2*([^\1\2])\3*([^\1\2\3])\4*([^\1\2\3\4])\5*(
[^\1\2\3\4\5])\6*[\1\2\3\4\5\6]{6,}
こんな風にすると新たな種類の文字がキャプチャされていくように思えますが
既に登場した文字が再び登場するとマッチしなくなります
12文字中の文字が最大で6種類しかない
ようなときどうすればいいでしょうか?
(.)\1*([^\1])\2*([^\1\2])\3*([^\1\2\3])\4*([^\1\2\3\4])\5*(
[^\1\2\3\4\5])\6 (.)\1*([^\1])\2*([^\1\2])\3*([^\1\2\3])\4*([^\1\2\3\4])\5*(
[^\1\2\3\4\5])\6*[\1\2\3\4\5\6]{6,}
こんな風にすると新たな種類の文字がキャプチャされていくように思えますが
既に登場した文字が再び登場するとマッチしなくなります
200デフォルトの名無しさん
2020/05/16(土) 15:33:21.77ID:hjibA7SH 例を挙げると
↓慮↓鸞↑↓↓→慮↑←←↑→↑鸞↑→←→艪慮慮↑鸞鸞慮慮艪艪鸞→→↑慮↓→↓↓↑
慮鸞鸞艪艪→慮鸞艪鸞鸞↑慮艪慮艪慮↑←慮↑↑慮↑←艪→←鸞↑↓↑↑↓艪↓鸞慮→→
→艪←艪←↓↓←艪←↑→←←←鸞↓↓艪↑鸞←鸞←↓慮鸞←慮←慮↓慮慮慮慮↓↑艪
こんな感じの荒らしです
文字は毎回ランダムで変わります
登場する文字の種類が少ないという点でマッチさせたいと思っています
↓慮↓鸞↑↓↓→慮↑←←↑→↑鸞↑→←→艪慮慮↑鸞鸞慮慮艪艪鸞→→↑慮↓→↓↓↑
慮鸞鸞艪艪→慮鸞艪鸞鸞↑慮艪慮艪慮↑←慮↑↑慮↑←艪→←鸞↑↓↑↑↓艪↓鸞慮→→
→艪←艪←↓↓←艪←↑→←←←鸞↓↓艪↑鸞←鸞←↓慮鸞←慮←慮↓慮慮慮慮↓↑艪
こんな感じの荒らしです
文字は毎回ランダムで変わります
登場する文字の種類が少ないという点でマッチさせたいと思っています
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★4 [ぐれ★]
- 【音楽】Perfume・あ~ちゃんの結婚相手「一般男性」は吉田カバンの社長・吉田幸裕氏(41) 高身長で山本耕史似 [Ailuropoda melanoleuca★]
- 【大分】佐賀関で大規模火災、170棟以上が延焼中 70代男性1人と連絡取れず [ぐれ★]
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 【サッカー】日本代表、ボリビアに3発快勝 森保監督通算100試合目を飾る…鎌田、町野、中村がゴール [久太郎★]
- 自閉症が「んなっしょい」と連呼するお🏡
- アンケート調査で「高市発言は問題なし」 93.5%wwwwwwwwwwwwwwwwwwwwwwwww [279254606]
- じゃあ何故俺がここまで独身チーズ男性を嫌っているか理由が分かる?
- クマの救急医「ヘルメット被れ」 [787212328]
- 生活保護の受給額ってなんでこんなに安いの?
- 自民党議員「高市は先人が築き上げた日中関係を壊した。外務省が謝罪に言ってるが自分で責任を取れ」 [834922174]
