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以降
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
カレンダーは西向く侍があるから正規表現単独では無理では……
2020/04/15(水) 11:16:23.86ID:oU4wEPk/
>>181
意味がよくわからんが、
任意の日付から14日前(後?)を抜き出すってことなら
正規表現よりはscriptの領域だろ。
2020/04/15(水) 11:19:34.98ID:MMPwOLF/
>>182
大体でもできないでしょうか。
と書こうと思ったときに思いつきました。。。

実行速度に問題が出るかもしれませんが、
3月15日または、3月16日または、3月17日または・・・4月15日。

って力技でやってみます・・・。

もし、ほかにも「こういう方法があるよ」って素敵なアイデアお持ちのかた
いらっしゃいましたら、ぜひレスをください。宜しくお願い致します。
2020/04/15(水) 11:29:40.68ID:oU4wEPk/
>>184
そもそも4/15から14日前で何で3月が入るんだよ。
間飛んでる可能性があるって事?
だとすればなおさら正規表現向きではない。
2020/04/15(水) 11:31:48.22ID:MMPwOLF/
>>185
すみません、そこは書き間違えです。
awkってコマンドでできそうなので
もう少し調べてみます。

スレ汚し失礼いたしました。
2020/04/15(水) 11:48:04.80ID:oU4wEPk/
>>186
3/15〜4/15限定での力技なら
2020(¥-03¥-(1[5-9]|2[0-9]|3[0-1])|¥-04¥-(0[1-9]|1[0-5]))
2020/04/15(水) 11:49:07.49ID:MMPwOLF/
>>183
ありがとうございます。
scriptというのが大きなヒントになり解決に至りました。

結果的にはこれでできました。
cat 対象ログファイル | awk '"2020-04-01" <= $2 && $2 < "2020-04-02"'

性器表現ばっかりにとらわれてました・・
ありがとうございます。
2020/04/15(水) 13:19:12.50ID:Ut6Mn670
何を言いたいのかエスパーでもわからん
オーダーはもっと正確に
2020/04/15(水) 16:37:41.08ID:h/7T7n1i
>>181
ちょっとだけややこしい検索にはawkがおすすめ
2020/04/15(水) 16:53:34.03ID:z6xNdPvI
性器表現って(i)みたいなのだろw
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

よろしくお願いいたします。
2020/04/21(火) 11:41:25.90ID:3ZBp0+Pn
〇使用した正規表現(置換)
.*((([0-9]{1,3}\.){3})[0-9]{1,3}).*
$1

が抜けてました
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.*
とか
2020/04/21(火) 13:08:13.53ID:bjfyOojV
>>193
とても意味がわかって書いているとは思えないが。
ログがそのパターンだけならこれでいけるでしょ。
¥d+¥.¥d+¥.¥d+¥.¥d+
頭が192.168.だけならそれで絞ってもいいし。
2020/04/21(火) 13:34:44.69ID:3ZBp0+Pn
>>194
両方ばっちりうまくいきました。
ありがとうございます。

\dとか\bとかいろいろあるんですね。
\t位しか知りませんでした。
ありがとうございます。
2020/04/21(火) 22:38:03.26ID:alPdontK
.* を [^0-9]* もしくは \D*
2020/04/21(火) 23:03:33.07ID:J0u+GdjC
推奨はしないけど、元の奴で、.*に?を追加して
.*?((([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,}

こんな風にすると新たな種類の文字がキャプチャされていくように思えますが
既に登場した文字が再び登場するとマッチしなくなります
200デフォルトの名無しさん
垢版 |
2020/05/16(土) 15:33:21.77ID:hjibA7SH
例を挙げると


↓慮↓鸞↑↓↓→慮↑←←↑→↑鸞↑→←→艪慮慮↑鸞鸞慮慮艪艪鸞→→↑慮↓→↓↓↑
慮鸞鸞艪艪→慮鸞艪鸞鸞↑慮艪慮艪慮↑←慮↑↑慮↑←艪→←鸞↑↓↑↑↓艪↓鸞慮→→
→艪←艪←↓↓←艪←↑→←←←鸞↓↓艪↑鸞←鸞←↓慮鸞←慮←慮↓慮慮慮慮↓↑艪

こんな感じの荒らしです
文字は毎回ランダムで変わります
登場する文字の種類が少ないという点でマッチさせたいと思っています
2020/05/16(土) 15:34:13.39ID:C+uyEXd2
(.)\1*([^\1])[\1\2]*([^\1\2])[\1\2\3]*([^\1\2\3])[\1\2\3\4]*([^\1\2\3\4])[\1\2\3\4\5]*
こんな感じ?
202デフォルトの名無しさん
垢版 |
2020/05/16(土) 19:45:32.29ID:hjibA7SH
>>201
試したらそれだとほぼ全ての文章にも当てはまるみたいです
2020/05/16(土) 20:00:27.44ID:C+uyEXd2
^(.)+(?!\1)(.)(?:\1|\2)*(?!\1|\2)(.)(?:\1|\2|\3)*(?!\1|\2|\3)(.)(?:\1|\2|\3|\4)*
文字クラス中で後方参照使えないなら否定先読みで代替
2020/05/16(土) 20:04:12.78ID:C+uyEXd2
訂正
試してなかった
^(.)\1*(?!\1)(.)(?:\1|\2)*(?!\1|\2)(.)(?:\1|\2|\3)*(?!\1|\2|\3)(.)(?:\1|\2|\3|\4)*
2020/05/16(土) 20:19:48.01ID:vPXPesfb
無理だと思ったけどなんかできたわ
6種類以下の文字だけで行の頭から20文字
(?m:^)(?=(.)\1*+(?>(.)(?>\1|\2)*+(?>(.)(?>\1|\2|\3)*+(?>(.)(?>\1|\2|\3|\4)*+(?>(.)(?>\1|\2|\3|\4|\5)*+(.)?+)?+)?+)?+)?+)(?>\1|\2|\3|\4|\5|\6){20}
206デフォルトの名無しさん
垢版 |
2020/05/16(土) 20:35:19.65ID:hjibA7SH
>>203-205
ありがとうございます!
後方参照難しいですね…
2020/05/16(土) 20:49:23.06ID:YcXGn5Zu
言ってる通りの条件でやると滅茶苦茶誤爆して使い物にならんと思う
例が7文字だし、ググって類似の荒らしが使っているものにマッチしつつ誤爆控え目にするように
110字以上のレスの最後まで7字以下というくらいの条件にしたらこんな感じか

^ *(?=.{110})([^<br> ])(?:[<br> ]|\1)*([^<br> ])(?:[<br> ]|\1|\2)*([^<br> ])(?:[<br> ]|\1|\2|\3)*([^<br> ])(?:[<br> ]|\1|\2|\3|\4)*
【改行】([^<br> ])(?:[<br> ]|\1|\2|\3|\4|\5)*([^<br> ])(?:[<br> ]|\1|\2|\3|\4|\5|\6)*([^<br> ])(?:[<br> ]|\1|\2|\3|\4|\5|\6|\7)*$

【改行】とその前の改行を削除
2020/05/16(土) 21:09:00.00ID:BiE2hTzx
別の判定要件にしないと誤爆頻発しそう...

例えば「特定コード範囲の文字が連続n回出現でNG」とかじゃダメなの?
209デフォルトの名無しさん
垢版 |
2020/05/16(土) 21:23:17.44ID:hjibA7SH
>>208
確率的に連続しないケースが結構出ちゃいますよね
2020/05/17(日) 01:33:54.38ID:C/hIIgkx
文字→文字または文字パターン、でどうだろう

そのボットの仕様を把握してないし実際のレスも見たことないのでなんとも言えないけど、文字種の制約以外に傾向を見いだせないってこと?
211デフォルトの名無しさん
垢版 |
2020/05/17(日) 03:28:48.68ID:EMK05c2V
>>210
こんな感じ


東大医学部医学科卒業、3年連続国試不合格のルシファーさん、偏差値95.3を取った模試の成績表をTwitterのヘッダーにしてしまう
http://leia.5ch.net/test/read.cgi/poverty/1589560323/

電光掲示板的なAAによって正規表現NGを逃れようとしている

今のところ
(\S{0,10}\s){10,}
(?=(.)\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|\7)*+(?>(.)(?>\1|\2|\3|\4|\5|\6|\7|\8)*+(.)?+)?+)?+)?+)?+)?+)?+)?+)(?>\1|\2|\3|\4|\5|\6|\7|\8){17,}
で完璧に対応出来てる
212デフォルトの名無しさん
垢版 |
2020/05/17(日) 03:45:05.05ID:EMK05c2V
17文字もあるのに文字種が8種以内って
自然言語としては有り得ないわけですよ
そのエントロピー的な性質をターゲットにしてる
つまり完全ランダムじゃなくて電光掲示板的に嫌がらせメッセージを目立たせたいという意図を持ってるから可能になる手法
2020/05/17(日) 03:46:57.41ID:C/hIIgkx
>>211
なるほどw
214デフォルトの名無しさん
垢版 |
2020/05/17(日) 04:00:56.20ID:EMK05c2V
こうかはばつぐんだ!

必死にNG逃れのためのスクリプト書いたのに全て通用しなくて発狂して逃げたww
2020/05/17(日) 04:36:26.20ID:zN/y7CUr
結果として片棒担がされてた訳か

https://leia.5ch.net/test/read.cgi/poverty/1589560323/870
870 番組の途中ですがアフィサイトへの転載は禁止です (ワッチョイW 2bde-sAUE) 2020/05/17(日) 00:30:59.00 ID:LtSh5oo60
再度書き込みなっちまったけど、レスすんなよ
グズ正規表現野郎。
お前が煽ったせいで、さらにサキオタアンチがめんどくさくなった。
皆、ひっそり、IDやワッチョイと、少しの正規表現でNGしてた。
それらができない5chブラウザとかあるのに。

自分だけ調子に乗るなよクズ。
216デフォルトの名無しさん
垢版 |
2020/05/17(日) 04:41:56.29ID:EMK05c2V
>>215
それ荒らし本人が正規表現で完封されるのが悔しくて書いたやつだぞ
2020/05/17(日) 04:45:15.72ID:zN/y7CUr
そうなのか
でもはたから見てると一緒だと思うよ
荒らし構うのはただの荒らしだよ
218デフォルトの名無しさん
垢版 |
2020/05/17(日) 04:53:36.77ID:EMK05c2V
>>217
この荒らしは誰からも無視されてるのに何年も続けてる奴だからな
自分がターゲットにされて遊ばれて悔しいという体験は初めてだろうな
放置すれば荒らしが消えると思うのは間違い
キチガイは何年でも休まずに荒らし続ける
しかも手動で

そのキチガイの世界を壊してあげる作戦
2020/05/17(日) 05:51:07.31ID:zN/y7CUr
自粛警察みたいな奴だな
正義とか妄信しない方が良いぞ
220デフォルトの名無しさん
垢版 |
2020/05/17(日) 05:52:32.20ID:EMK05c2V
アホを悔しがらせて頭の体操になるなんて最高やん
こんな快感なこと他にある?
2020/05/17(日) 13:46:59.90ID:2FMa8UuX
正規表現を自動生成するAIはまだ?
222デフォルトの名無しさん
垢版 |
2020/05/17(日) 18:37:04.48ID:EMK05c2V
機械学習で正規表現を獲得するみたいなの出来ないですかね
2020/05/17(日) 20:33:27.11ID:MuJmPUno
他力本願+ノイズは一人前
2020/05/29(金) 08:30:19.28ID:/k2a15rY
*でも+でもどちらでもよいという場面では*にするのが慣例でしょうか?それとも文字通りどちらでもいいのかな?
2020/05/29(金) 11:43:39.33ID://ihWgfL
このスレに来る奴って論理的思考をする人達だと思ってたけど、
慣例とか持ち出すような奴も来るんだな
意味が有って違うSyntaxなんだから適切な方を使え
2020/05/29(金) 12:20:15.31ID:KLwVXlC+
どっちでもいいってどういう場合だ
どっちかになるだろ
227224
垢版 |
2020/05/29(金) 13:19:30.03ID:YZO921+1
例えば対象が1回以上の繰り返しだとします
0回以上には1回以上が含まれているのだから、どちらかが適切であるという積極的な理由が見つかりません
2020/05/29(金) 13:22:19.49ID:KLwVXlC+
一つも無くていいってのと一つは必ず無いといけないってのは両立する場面は無い
2020/05/29(金) 13:27:35.99ID:zvuAHZcb
「1回以上」ならつべこべ言わずに"+"だな
「0回は外したい」という意味を含むのであれば
"*"は仕様から外れる
個人的には"*"はできるだけ使わない
2020/05/29(金) 15:05:09.67ID:IKIHl4j2
1回以上であることが分かっているのであれば0回の可能性がないことを示しておけるというのが合理的理由だよ。
*でマッチさせられるとしても後からソース見て混乱するだけだ。慣例といえば慣例だが機能すればいいというものでもない。
2020/05/29(金) 19:24:39.89ID:ZvrYTh83
>>227
読む人(未来の自分含む)のことを考えれば、可能な限り対象を絞り込んだ方が(設計意図が読み取りやすくて)よい
2020/05/29(金) 21:22:17.43ID:VNOYZXTT
A+とAA*の効率化の話かと思った
AA*の方が最初のAで最適化される分だけ速いとかなんとか
2020/05/29(金) 21:49:09.90ID:dZOo8Hm0
>>232
オートマトンを組むので速度は変わらないと思うが
234デフォルトの名無しさん
垢版 |
2020/06/18(木) 21:13:18.22ID:jAvldfC1
https://i.imgur.com/ngqWoOX.jpg

上を下としたいのですが、2回に分けることは可能ですが、1回でやれますでしょうか?スラッシュが含まれる場合、そこをエスケープしたいのです
scriptタグ貼ると怒られますので、画像です(´・ω・`)、、、
2020/06/18(木) 22:17:30.24ID:3QD4/INi
>>234
正規表現: (<([^>]+)>[^<]*<)(/\2>)
置換   : "$1\$3"
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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