Regular Expression(正規表現) Part15

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2019/09/16(月) 22:25:11.87ID:enU8we0d
Regular Expressionスレです。

質問する場合は必ず実装言語や処理系ソフトウェア名を示してください。

前スレ
Regular Expression(正規表現) Part14
https://mevius.5ch.net/test/read.cgi/tech/1489511075/


次スレは>>980宜しく
天ぷら等>>2以降
2019/12/09(月) 21:21:57.03ID:wMFl4+9a
鬼車のは (?<=ab|cd) だけじゃなく (?<=ab|cde) みたいなのも可ってことだったと思う

戻り読みを本当に後戻りしながらマッチングしてる実装ってほとんどなくて
大抵は文字列を一旦n文字分巻き戻して先読み相当の処理をするって感じになってるんで
パターンコンパイル時に「n文字分」が確定できない表現は弾かれる
2019/12/11(水) 02:25:16.21ID:ue3GcKd8
グレップ坊や というソフト使ってますが
正規表現で、データだけ検索 データーを除外したい
どいう表記になりますか?
2019/12/11(水) 02:56:43.47ID:ivhCTlPt
データを表現する正規表現が基本
除外については反転オプションないの?
本家 grep には -v で反転する
2019/12/11(水) 13:45:29.55ID:Jxz7JQeN
データ(?!ー)
データ(?=[^ー])
否定先読みか先読みが使えるならこれで出来る
独自のものだと適切なエスケープが必要かも
VB6ランタイム必要とあるからたぶんVBだろうけど
8684
垢版 |
2019/12/14(土) 01:37:01.84ID:atjDTluR
下のほうで行けました
2020/01/02(木) 13:19:03.26ID:MApT2CVk
●Regular Expressionの使用環境
sed-4.7-x64.exe
(Gnu sed4.7のwindows版 https://github.com/mbuilov/sed-windows)
Windows 8.1(64)のPowerShellで実行

●検索か置換か?
置換(削除)

●説明
行頭から6文字目を削除して、行頭から2文字目の後に一文字挿入したい

●対象データ
1229日 1400
1230月 1500
1231火 1500

●希望する結果
12/29日1400
12/30月1500
12/31火1500

sed.exe -e "s/(?<=^.{5})\s//" .\ファイル.txt
としたら6文字目のスペースが削除されるかと思ったけどうまくいかない
ファイルはUTF-8で改行はCRLFです
2020/01/02(木) 13:33:45.38ID:LqVuN/CI
>>87
> うまくいかない
なぜどううまくいかないのかを書かないの?
2020/01/02(木) 13:48:39.30ID:MApT2CVk
何も削除されずに元のファイルがそのままです。
エラー表示等はないです。
2020/01/02(木) 16:53:21.09ID:gZNl6+48
^(.{2})(.{3}).(.*)$
$1/$2$3
2020/01/02(木) 17:35:51.43ID:fx8yTANL
sed -i ?
2020/01/02(木) 18:35:38.12ID:gZNl6+48
sed -E "s/^(..)(...)\s(.*)/\1\/\2\3/" .\ファイル.txt
2020/01/13(月) 16:24:20.40ID:pG6qAwQV
●Regular Expressionの使用環境
正規表現の本・テキストで疑問に思った部分ですので特に環境は無いです 

●対象データ
太郎はテニス部のキャプテンです。
太郎はサッカー部のキャプテンです。
太郎は野球部のキャプテンです。
太郎はバスケ部のキャプテンです。

●検索か置換か?
検索

●希望する結果
太郎はテニス部のキャプテンです。
太郎はサッカー部のキャプテンです。
太郎は野球部のキャプテンです。

●説明
通常の 太郎は(テニス|野球|サッカー)部のキャプテンです では無く
バスケ という単語を使い正規表現を作りたいのです
()を使った場合(使わなくても バスケ を用いた方法であれば良い)
の否定文・除くの書き方がわかりません
^ を使っってみましたが上手く行きませでした

太郎は(^バスケ)部のキャプテンです。 ・・ダメ
太郎は^(バスケ)部のキャプテンです。 ・・ダメ  
太郎は(\^バスケ)部のキャプテンです。 ・・ダメ

バスケ を使った場合どの様に記述すれば良いのでしょうか?
2020/01/13(月) 16:54:41.37ID:omefpgVu
否定は、(?!文字列)
でも、太郎は(?!バスケ)部の、とは書けないよ
「太郎は」に続く「バスケでない任意の1文字以上の文字列」部のキャプテンという風に考えてみてくれ
95デフォルトの名無しさん
垢版 |
2020/01/13(月) 17:05:50.06ID:KqHO+Fgo
>>93
正規表現だけでは否定を完全実現できない。
だからこそ、例えばgrepには -vオプションがある。いずれのライブラリやアプリも正規表現とは別の方法で否定を実現している。
2020/01/13(月) 17:19:50.81ID:isx+DaHv
太郎は(?!バスケ).*部のキャプテンです。
太郎は(?!バスケ).*
(?!.*バスケ)太郎は.*部のキャプテンです。
(?!.*バスケ)太郎.*
(?!.*バスケ).*
2020/01/13(月) 17:32:26.06ID:isx+DaHv
鬼雲 非包含
^(?~バスケ|\n)$
2020/01/13(月) 18:15:40.74ID:pG6qAwQV
太郎は(?!バスケ).*部のキャプテンです。
にて出来ましたが
(?!バスケ) の扱いを .* でさらに処理しなきゃいけないのは全く思いつかないです
今回のを参考に今後も学習してみます

皆様 >>94->>97 ありがとうございました
2020/01/13(月) 18:19:19.63ID:isx+DaHv
>>98
https://abicky.net/2010/05/30/135112/
2020/01/14(火) 22:34:44.82ID:kxfWTRop
^(?!.*バスケ)(?=.*キャプテン)(?=.*太郎).*
101デフォルトの名無しさん
垢版 |
2020/01/15(水) 00:24:06.58ID:qFZTgD7k
'あ'.match(/[あ゙い゙ゔえ゙お゙]/u)

(環境依存文字ですが、[]の中身は濁点つきの「あいうえお」です)
'あ'は濁点なしなのでマッチさせたくないのですがしてしまいます
これってマッチしないようにする方法はないですか?
JavaScriptです
102101
垢版 |
2020/01/15(水) 00:30:34.00ID:qFZTgD7k
>>101 自己解決しました

'あ'.match(/\u3099/u) //マッチしない
'あ゙'.match(/\u3099/u) //マッチする
2020/01/15(水) 12:08:15.81ID:lFvJ7mPZ
^(?!.*バスケ(?!ット(?!ボール(?!選手)))).*
バスケ          ←不一致
バスケット        ←一致
バスケットボール    ←不一致
バスケットボール選手 ←一致
太郎はバスケットボール選手としてバスケ部に入部している ←不一致
太郎はバスケットボール選手としてバスケット部に入部している ←一致
2020/01/15(水) 14:36:24.87ID:mWwHDwCD
んなことよりバスケやろうぜ
105デフォルトの名無しさん
垢版 |
2020/02/09(日) 22:06:03.00ID:XBEo77KP
マッチしたカッコ内の文字列をを利用する方法ってどうやるんでしたか?

http://hogehoge.jp
http://(.*).jp

このアスタリスクの部分を利用するのはどうやるんでしたかね
t1ではないです
2020/02/09(日) 22:18:21.72ID:6++kPC7v
>>105
>>2
> スルーされにくい質問のテンプレと例
> ●Regular Expressionの使用環境
107デフォルトの名無しさん
垢版 |
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
109デフォルトの名無しさん
垢版 |
2020/02/09(日) 22:34:49.85ID:XBEo77KP
http://$1.jp
を忘れていました
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
2020/02/10(月) 18:02:57.53ID:cKG4UD69
>>110

>>108はHTMLをパースしたいんじゃなく
HTMLの一部を生成したいんじゃろ
2020/02/11(火) 07:15:58.31ID:Kcy+Q8b9
>>108
.jpが末尾につく行がリンクだと仮定してjavascript

/^(.+\.jp)$/gm

上記の正規表現で

<a hef=“http://$1”>http://$1<;/a>

正規表現のフラグのmで複数行対応、gで複数の結果で対応出来ん?
2020/02/11(火) 13:30:47.89ID:yXLnwJ70
(https?://\S+)
<a href=“\1”>\1</a>
2020/02/12(水) 09:21:48.77ID:iIu6BAwU
1) (hoge)
2) (hoge, fuga)
3) (hoge, fuga, piyo)

2) のみにマッチする正規表現のご教示よろしくお願いいたします

鬼雲
2020/02/12(水) 10:28:49.15ID:bUEb5r3d
hogeとfugaを後で使うと仮定して
\((.+),(.+)\)
2020/02/12(水) 10:51:06.48ID:NK/UnlDo
>>115
それだと3)にもマッチするよ
2020/02/12(水) 11:05:14.78ID:W9U9giTl
>>114
a\)
2020/02/12(水) 15:06:59.76ID:bUEb5r3d
.を[^,]でどう?
2020/02/12(水) 15:37:27.75ID:iIu6BAwU
ID:bUEb5r3d 様
ありがとうございました。m(_ _)m

「\([^,]*,[^,]*?\)」で希望動作になりました
2020/02/12(水) 18:44:57.81ID:bUEb5r3d
どういたしまして。

ちなみに+じゃなくて*にしてるのは
(,)
にも一致させたいという事?
あと?は無くても動かん?
2020/02/12(水) 18:51:28.08ID:gdzQpnag
[^,]*だと改行と閉じ括弧を含んでしまい
次の行まで選択してしまうのでは?
2020/02/12(水) 19:37:56.96ID:bUEb5r3d
確かにこんなデータも想定するとアウトやね

((hoge,huga)piyo)

改行はオプション次第だね
2020/02/18(火) 23:17:54.25ID:TkHg8SjE
指定した2つの文字XYの間がn文字以下(0を含む)にマッチする検索方法教えてください

マッチ例n=3
XY
XaY
XabcY

NG
XabcdY
2020/02/18(火) 23:50:11.22ID:rgk/DkAY
X.{0,3}Y
とかかな、試してないけど
2020/02/19(水) 00:18:10.76ID:Y6/DCNeg
>>124
ありがとうございます
2020/02/24(月) 14:31:40.12ID:iLDNrypx
●Regular Expressionの使用環境
実際に使う環境は不明ですが、まずはサクラエディタで試そうと思います。

●検索か置換か?
検索。マッチ部分を抽出できる必要はなく、含むかだけわかれば良いです。

●説明
文章(サクラは複数行NGとのことなので、今は1行)の中に「市」という文字が入っているかを判定したいです。
しかし、「横浜市」のような地名が入っているかを判定したいので、「巨大都市」「姉妹都市」のような特定のワードは排除したいです。
>>103の前後が逆のパターンになると思うのですが、単純に「^(?!.*(?!(?!巨大都|姉妹都)市)).*」とすると何もマッチしなくなってしまいます。
(そもそも「^(?!.*(?!ット(?!ボール))).*」の時点で「バスケット」にマッチしません)

●対象データ・希望する結果
ここは巨大都市だ
(マッチなし)
ここは横浜市だ
     ^
ここは巨大都市の横浜市だ
          ^
2020/02/24(月) 14:48:12.43ID:iQYTd9Fe
>>126
(?<!巨大都|姉妹都)市

Negative Lookbehindを使う
https://regex101.com/r/kP6luP/1
128126
垢版 |
2020/02/24(月) 15:48:38.69ID:iLDNrypx
>>127
できました、ありがとうございます
後読みというのもあるんですね
129デフォルトの名無しさん
垢版 |
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

実際の文字列は数字とは限りません。可能かわかりませんがどうぞお願いします。
2020/03/21(土) 16:32:31.37ID:S0XSDbOV
>>129
使用環境も書きましょう。
プログラミング言語かテキストエディタかでも大分違ってきますし。

スルーされにくい質問のテンプレと例

●Regular Expressionの使用環境
Java1.5

●検索か置換か?
検索

●説明
各行の1番目のAまでを検索したい

●対象データ
ABCA
BCAA
CABA

●希望する結果
ABCA
^
BCAA
^^^
CABA
^^

※ ^ はアンダーラインだそうな ^^;
2020/03/21(土) 16:58:05.15ID:iWBNd/W/
^(?=.*0)([^/]*).*$
\1
2020/03/21(土) 18:17:29.30ID:Ycs9n4/m
>>131
すごい!完璧に希望どおりにできました!
アリガトウゴザイマス!!!
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
2020/03/22(日) 11:49:39.63ID:feI8vnc9
0000などは連番扱いされないの?
2020/03/22(日) 11:55:19.77ID:zGmYOqdI
>>133
正規表現の方言がマイナー過ぎて難しい
:^isDigit: はPerl5でいう [^0-9] と等価という理解で合ってる?
2020/03/22(日) 12:16:09.69ID:loDgnmn0
ファイル名の最後の数字部分だけ取りたいなら (\d+).jpg とかじゃ駄目なん?
2020/03/22(日) 12:33:09.14ID:zGmYOqdI
>>133
そもそも :^isDigit: の前に .*は必要?
2020/03/22(日) 12:39:04.69ID:nQo0XPUd
>>134
その辺は捨てます
拡張子直前の数字だけを連番扱いです

>>135
それでいいです
書き方が変わってますが考え方は一緒です

>>137
ないとマッチしませんでした
2020/03/22(日) 12:41:01.29ID:nQo0XPUd
>>136
試しましたがマッチしません
2020/03/22(日) 12:43:52.41ID:nQo0XPUd
書き忘れましたが
ファイル名だけでなくファイルパスを含む場合があります・・

ex.
/a/b/c/d/_0000_1111_2222_3333.jpg

3333.jpgのようなパターンさえなければ対応できているのですが
これが来た場合にうまくいきません
2020/03/22(日) 13:22:29.93ID:ilL19jCu
>>139

>>136のだと
拡張子のピリオドがエスケープされてないから
(\d+)\.jpg
でキャプチャ箇所を抽出すればよいのでは?
2020/03/22(日) 13:27:20.03ID:nQo0XPUd
>>141
エスケープ付けてテストしてあります
2020/03/22(日) 13:29:10.24ID:aG3rJm5+
>>140
(/a/b/c/d/_0000_1111_2222_)?3333.jpg
2020/03/22(日) 13:33:55.99ID:nQo0XPUd
>>143
マッチします
145デフォルトの名無しさん
垢版 |
2020/03/22(日) 13:53:17.55ID:7GTLasBi
>>138
メソッドは何を使っているの
メソッドによって「文字列の先頭で一致する」とか
「文字列の任意の場所で一致する」とかあるでしょ
前者を使っているのでは?
後者なら>>136の類で上手く行くと思う

さもなくば ^(|.*:^isDigit:)(:isDigit:+)\.(:isAlphabetic:+)$ でどうかな
2020/03/22(日) 14:25:12.02ID:HpFFHFhU
JavaScript なら、これで一致するので、
キャプチャー部分だけを取り出す

var re = /(\d+)\.jpg/g;
2020/03/22(日) 14:31:11.47ID:loDgnmn0
文字列の先頭からしかマッチできないんなら .*(\d+).jpg でいいんじゃね
ルールがローカルすぎてよくわからんが
2020/03/22(日) 14:42:52.35ID:I5Su+SV6
>>133
>これだと3333.jpgなどのパターンに対応できない
ORでそのパターンをカバーしてやればいいよね
2020/03/22(日) 14:50:15.15ID:loDgnmn0
(.*[^\d])?(\d+)\.jpg
2020/03/22(日) 15:07:09.29ID:nQo0XPUd
>>145
先頭からスキャンするメソッドしかないようです
試して見たところうまく行きそうなのでテストしています
あまり関係ないですがisDigitやisAlphabetic自体がメソッド名で
char.isDigit(); みたいに内部的に呼ばれています

>>147
それだと最長一致の関係で
3333のうち3だけ取り出されてしまいます

>>149
こちらもうまく行きそうです

後ほど結果ご報告致します
2020/03/22(日) 15:21:27.08ID:H4vT0xhv
(.*[^\d])?(\d+)\.jpe?g
\2
2020/03/22(日) 15:30:56.06ID:nQo0XPUd
一通り検査して全てパスできました
皆様ありがとうございました

それにしてもうまい方法があるものですね勉強になります・・
2020/03/22(日) 21:42:28.57ID:hAKSIWAv
>>133を見て何が何だかだわ
皆さんスゲーな
2020/03/23(月) 07:21:58.66ID:jGS2rL5b
VSCode なら、Regex Previewer という拡張機能がある

JavaScript, PHP の正規表現をテストできる
2020/04/09(木) 01:23:43.84ID:o0bB5yvE
正規表現の段位、級位みたい試験があると転職に役立つかな
正規表現3段所持みたいな
試験問題はほとんどパズルだな

当方は頭悪いので、複数の単純な正規表現使用派
2020/04/09(木) 14:34:47.92ID:67/p/Sga
正規表現必須!てな現場もそうそう無いだろうし
使えて当たり前、だけど高度過ぎる常人に思い付けないようなものが必要になる場面もまず無いだろうし
そうなったら出来る奴に丸投げすりゃいいし
プログラム内なら全て正規表現任せにせずに前処理した方が良いケースも多々あるからそれ絡めてのスキルだと思うし
方言が多い事や解が複数あり得る事も試験化には問題
マークシート選択方式では引っ掛け問題ばかりになるだろうし何か違う気がする
資格化したところで精々、文系脳の奴がどれだけ論理思考が出来るか?の目安とか雑なIQ判定くらいにしか役立ちそうにない
義務教育内でこんなのあるよ程度に最低限くらいは教えておいて欲しいけど資格化までは疑問かな
2020/04/09(木) 18:11:21.90ID:AINw40ik
>>156
君は正規表現の前に日本語の義務教育受けてこいw
2020/04/09(木) 21:20:08.08ID:HMI1Vo9o
日本語力に特段問題があるようには見えないが
2020/04/09(木) 21:34:35.21ID:+PEAWxOJ
俺もちゃんと何言ってるのか分かったし、特に読んでて疑問も覚えなかったね
2020/04/09(木) 22:20:15.44ID:zOdaCiQO
文章がくどいとは思う
2020/04/09(木) 22:26:46.58ID:BSAQTOUE
難題を解決したらあいつスゲーなとなるけど
なかなかその機会が訪れないよな
2020/04/09(木) 23:07:21.92ID:+PEAWxOJ
>>160
くどいというより接続詞で繋げすぎだね
2020/04/10(金) 05:35:38.69ID:OHa28c9H
論文とかの文章ならどうかと思うけど
こういう掲示板での改行の仕方とか含めての表現では
別に問題ないよなと思った
2020/04/10(金) 07:01:05.28ID:ZlkuoHXS
義務教育やり直せレベルにはみえない
雑文としては意味が通じないような文では無いだろう
157の日本語力が低杉なんじゃ?
2020/04/10(金) 08:59:24.36ID:sn6MPl7m
>>161
パズルとしてはいいけど業務でやられると保守できなくなるしな
2020/04/10(金) 09:02:57.81ID:sn6MPl7m
>>157フルボッコw
最初の方で「~し」を多用してるのがちょいウザいけど内容的にはまあ頷けるわな
2020/04/10(金) 11:44:30.56ID:BcRc61MP
>>161
そいつじゃないとできないっていう状況を会社は嫌がるからね
いつやめるかもわからんし
資産がゴミ化してしまうのを恐れる
2020/04/10(金) 14:42:19.38ID:k/YdHOe5
そもそも問題が複雑だから複雑な正規表現になってしまうのでは?
そういう場合はそいつじゃないとできないという状況になってしまうこともありうる
2020/04/10(金) 15:00:43.02ID:71OQfeOs
うん、そういう場合もあると思うけど
多くの人はそもそも正規表現で解決出来るかもという発想がなくて
手間と時間をかけて頑張るか、その仕事を断る
そんな場合が多い気がする
2020/04/10(金) 15:25:33.75ID:BcRc61MP
まあbison/flex使って片付けてたらそれはやめてくれとも言われたこともあるしな
引き継げないだろと
2020/04/10(金) 16:34:01.15ID:sn6MPl7m
>>168
一例として…

頑張れば1つにまとめられる
でも場合分けすればコードは長くなるし性能も劣化するけどわかりやすく書ける

って言うケースはそれなりにあると思うよ
2020/04/10(金) 23:03:46.23ID:ALVzSQYS
頑張りすぎちゃって誰もメンテできないような手に負えないSQLってたまに出くわすけど、
それと同じような要領で頑張りすぎちゃって誰もメンテできないような正規表現が出てきたら・・・・
自分だったらSQLのときよりもさらに全力で逃げ出すかなあ

正規表現ってただでさえ魔法のような暗号文化しがちだし(後で読解に困ることも多いし)
仕様を簡潔明瞭にコードに落とし込むスキルがないダメプログラマが
力技で正規表現ゴリゴリ書くことを考えるとかなりの恐怖
エスアイアーの現場ならむしろ安全のため正規表現全面禁止にしておくほうがマシなんじゃなかろうか
2020/04/11(土) 00:23:01.95ID:yLiBv2Sb
三項演算子でも同じ問題あるね
可読性と簡潔性は必ずしも両立しない
2020/04/11(土) 00:37:32.49ID:aIl7Qg1V
仕様がわかっていれば
ちゃんとしたドキュメントが残っていれば何とでもなる
暗号をわかりやすいプログラムに変換可能だから
とりあえず動いているので触りたくないというのどうにもならない
それはそのプログラムが近い将来破綻することを意味する
2020/04/11(土) 01:03:41.61ID:Ni1vKiQd
>>172
正規表現は仕様の分かるテストケース一式を必ず用意させれば問題ない

つまり難しい正規表現を使いこなす能力よりも
もれなくテストケースを書ける能力のほうが大事
2020/04/11(土) 05:53:16.03ID:qQ/s2VQN
>>175
あーあーそれはなんか分かる・しっくり来るな。完全同意だわ。
2020/04/11(土) 09:32:41.81ID:Qk2+GLy8
>>175
でもそれって正規表現使っているか否かに関わらず本来なされているべきことだよね
正規表現とか特定の機能を使ってるところだけ特別扱いしてドキュメントやテスト仕様を残させるとか
絶対サボる人が出てきそう
でもってサボったところに限って誰も直せないようなクソコードと化すパターン
2020/04/11(土) 16:30:10.27ID:Ni1vKiQd
>>177
仕様の分かるテストケースってのはテストコードのことね
正規表現は作る時に必ずマッチする例とマッチしない例を書いて確認するでしょ?
それを仕様の分かるテストコードにしてセットで扱えるようにしておくってこと
コードレビュー時も正規表現だけ見てレビューしても効果薄いから
テストコードとセットでレビューする

>でもそれって正規表現使っているか否かに関わらず本来なされているべきことだよね
これはそうでもないよ
複雑なSQLの場合は仕様の分かるテストコードを一式用意するのは結構難しくて
ある範囲を超えると手間に見合わないから仕様書とSQL自体のレビューだったり手動テストで補完する
正規表現は純粋関数として扱えるのでその辺の難しさがない
2020/04/14(火) 11:27:53.60ID:uSEs8eKP
足並み揃えないと不安で死んじゃう病
2020/04/14(火) 11:37:16.46ID:ARaCq1kB
人っていついなくなるかわからないからね
事故だったり勝手な理由で辞めたり
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です。(できる限りシンプルな書式でお示しください)
サンプルお示しいただけたら、あとはググりながら自分で調べます。

ググったのですが、サンプルになるいい感じのシンプルな書式が見当たらず
どうにもうまく正規表現を作れずにおります。何卒宜しくお願い致します。
2020/04/15(水) 11:13:15.42ID:ajU4Q4+G
カレンダーは西向く侍があるから正規表現単独では無理では……
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況