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:enU8we0d574デフォルトの名無しさん
2021/03/27(土) 08:17:02.42ID:8mKnzpia575デフォルトの名無しさん
2021/03/27(土) 09:50:47.60ID:6HYRQzqn576デフォルトの名無しさん
2021/03/27(土) 10:05:58.69ID:8qqpgzaM マッチしない行を正規表現で抽出したいとき、
必ず、^(?!.*残したい文字).*、この書き方になってしまいます、
必ず^(?!.*と).*で残したい文字を包むという書き方です。
ほかの書き方があれば教えてください。
例えば、以下のようなログファイルでerrだけ残したい場合は
^(?!.*err).*
と書いてerrを残します
[日付] warn メッセージ
[日付] info メッセージ
[日付] err メッセージ
[日付] info メッセージ
特段、これ以外の書き方が出来ず困ったという例も無いのですが、
ほかの表現を(あれば)知ることで、もっと知識を増やせるのではないとおもいお伺いします
よろしくお願いいたします。
必ず、^(?!.*残したい文字).*、この書き方になってしまいます、
必ず^(?!.*と).*で残したい文字を包むという書き方です。
ほかの書き方があれば教えてください。
例えば、以下のようなログファイルでerrだけ残したい場合は
^(?!.*err).*
と書いてerrを残します
[日付] warn メッセージ
[日付] info メッセージ
[日付] err メッセージ
[日付] info メッセージ
特段、これ以外の書き方が出来ず困ったという例も無いのですが、
ほかの表現を(あれば)知ることで、もっと知識を増やせるのではないとおもいお伺いします
よろしくお願いいたします。
577デフォルトの名無しさん
2021/03/27(土) 10:12:04.85ID:3M9UQTXy578デフォルトの名無しさん
2021/03/27(土) 10:24:10.55ID:HRW8qdH1 >>576
最後の.*は要らないんじゃないかな
最後の.*は要らないんじゃないかな
579デフォルトの名無しさん
2021/03/27(土) 10:53:48.21ID:cpUHfD3R >>576
>例えば、以下のようなログファイルでerrだけ残したい場合は
in-placeで置換するより、残したいものを抽出して新しいファイルを作成したほうがよくないか?
用途によっては日付とログレベルを指定してログファイルに直接クエリを投げてもいい
>例えば、以下のようなログファイルでerrだけ残したい場合は
in-placeで置換するより、残したいものを抽出して新しいファイルを作成したほうがよくないか?
用途によっては日付とログレベルを指定してログファイルに直接クエリを投げてもいい
580デフォルトの名無しさん
2021/03/27(土) 12:12:53.22ID:8qqpgzaM581デフォルトの名無しさん
2021/03/27(土) 12:42:16.84ID:TmS3InK/582デフォルトの名無しさん
2021/03/27(土) 15:07:28.25ID:cpUHfD3R >>580
余計なお世話なんだろうけどログファイルをわざわざエディタで開いて
マッチしない行を正規表現で置換して保存するのは無駄じゃないのって話
↓例えばgrepならこれでよくて指定も簡単だし自動化もしやすい
$ grep 'err' all.log > err.log
マッチしない行を正規表現を使いそうな例として
たまたま思いついただけならならいいんだけど
余計なお世話なんだろうけどログファイルをわざわざエディタで開いて
マッチしない行を正規表現で置換して保存するのは無駄じゃないのって話
↓例えばgrepならこれでよくて指定も簡単だし自動化もしやすい
$ grep 'err' all.log > err.log
マッチしない行を正規表現を使いそうな例として
たまたま思いついただけならならいいんだけど
583デフォルトの名無しさん
2021/03/27(土) 17:09:38.08ID:SqJSHKEy マッチしない行は-v付ければ取り出せるからな
584デフォルトの名無しさん
2021/03/27(土) 18:55:12.69ID:HRW8qdH1 そもそもサクラエディタにはマッチしない行を抽出する機能あるからあまり真剣に考えたことない
585デフォルトの名無しさん
2021/03/27(土) 22:37:04.08ID:p2/S5VcH ログの加工をエディタでやろうとするのは筋が悪いわな
586デフォルトの名無しさん
2021/03/28(日) 00:36:09.11ID:p6/Rs1VD 加工というか、ログは必要な部分だけ抽出して見たいという需要はある
587デフォルトの名無しさん
2021/03/28(日) 01:38:45.00ID:Ah6uwjvI たまにトラブルシューティングとかで検索する程度ならLog Parserみたいなやつでそれなりに捗るよ
検索はリニアなので量が増えると遅いけどgrepに比べれば条件指定がしやすい
https://www.microsoft.com/en-us/download/details.aspx?id=24659
速度を求めるならBigQueryとかの検索/分析系のDBに突っ込む
検索はリニアなので量が増えると遅いけどgrepに比べれば条件指定がしやすい
https://www.microsoft.com/en-us/download/details.aspx?id=24659
速度を求めるならBigQueryとかの検索/分析系のDBに突っ込む
588デフォルトの名無しさん
2021/03/28(日) 19:46:40.79ID:gm3gYlo8 >>580
サクラエディタ(bregonig.dll 4.10以降)使ってるなら
>>581も書いてるけど非包含オペレーターが使えます
鬼雲およびbregonig.dllの作者さん(
@k-takata)自身がQiitaに使い方とかも載せてます
https://qiita.com/k-takata/items/4e45121081c83d3d5bfd
サクラエディタ(bregonig.dll 4.10以降)使ってるなら
>>581も書いてるけど非包含オペレーターが使えます
鬼雲およびbregonig.dllの作者さん(
@k-takata)自身がQiitaに使い方とかも載せてます
https://qiita.com/k-takata/items/4e45121081c83d3d5bfd
589デフォルトの名無しさん
2021/03/31(水) 03:07:25.18ID:AtIsL56M regexエンジンって皆さんどういう基準で選んでますか?
ちょつとググるとcommon lispのcl-ppcreがダントツというベンチが出てきますが本当でしょうか?(このスレで言及が見当たらないもので…)
perl風なのがちょっと気になりますが
ちょつとググるとcommon lispのcl-ppcreがダントツというベンチが出てきますが本当でしょうか?(このスレで言及が見当たらないもので…)
perl風なのがちょっと気になりますが
590デフォルトの名無しさん
2021/03/31(水) 03:15:02.21ID:AtIsL56M (試せばいいんだけど、環境構築で折れました…)
591デフォルトの名無しさん
2021/03/31(水) 07:27:06.36ID:XV2UTtWr 特に制限なきゃ俺の採用基準は
・使おうとする言語で楽に使える奴
だな
あとダントツの基準や何を対象にするかは人によって違うから君の考えるダントツを説明しないと回答しようがないと思うぞ
・使おうとする言語で楽に使える奴
だな
あとダントツの基準や何を対象にするかは人によって違うから君の考えるダントツを説明しないと回答しようがないと思うぞ
592デフォルトの名無しさん
2021/03/31(水) 08:34:08.22ID:U/8CErR8 >>591
ベンチって書いてあるから速度でしょ
ベンチって書いてあるから速度でしょ
593デフォルトの名無しさん
2021/03/31(水) 11:28:59.80ID:Vc5hrOQS ユースケースで速度は変わるからそれだけじゃなんとも言えないよね
NGフィルターみたいなものを高速にしたい場合に言語標準以外で考えるなら
re2かhyperscanを候補にするかな
NGフィルターみたいなものを高速にしたい場合に言語標準以外で考えるなら
re2かhyperscanを候補にするかな
594デフォルトの名無しさん
2021/03/31(水) 12:11:49.60ID:AtIsL56M >>591-593
言葉足らずでしたごめん、線形にコードした化学式から部分構造マッチで設計に活かそうかと(古典的だけど)
chemspider.com等から100GB(100万エントリー)のテキストにまとめたが、重複や興味あるデータ以外はawk/sedでメモリに載せずに10GBまでは落とせるかも
コマンドライン引数で正規表現文字列を取り、そのままパイプで渡せる言語(cl、python等)なら速ければ何でもいいかなと
有名なperl/grepもパイプから読むけど、検索効率のためになんかキャッシュしてるようで、すぐメモリが膨らんでクラッシュする
言葉足らずでしたごめん、線形にコードした化学式から部分構造マッチで設計に活かそうかと(古典的だけど)
chemspider.com等から100GB(100万エントリー)のテキストにまとめたが、重複や興味あるデータ以外はawk/sedでメモリに載せずに10GBまでは落とせるかも
コマンドライン引数で正規表現文字列を取り、そのままパイプで渡せる言語(cl、python等)なら速ければ何でもいいかなと
有名なperl/grepもパイプから読むけど、検索効率のためになんかキャッシュしてるようで、すぐメモリが膨らんでクラッシュする
595デフォルトの名無しさん
2021/03/31(水) 12:32:32.23ID:AtIsL56M あんまり後処理できないけど、sedのg/re/pはスケーラブルみたい
g/re/commandのcommandでちょっと実験する限り、command中でmatch情報が使われてなければ保持しないのかな?
保持するmatch情報を指定出来き、match情報を得るたびに外部ファイルへ追記できる処理系が必要なのだろうか
g/re/commandのcommandでちょっと実験する限り、command中でmatch情報が使われてなければ保持しないのかな?
保持するmatch情報を指定出来き、match情報を得るたびに外部ファイルへ追記できる処理系が必要なのだろうか
596デフォルトの名無しさん
2021/03/31(水) 12:57:50.76ID:0y1R6Bno なんとなく、パイプ避けたほうが
597デフォルトの名無しさん
2021/03/31(水) 13:30:47.96ID:oCEpBqBX パイプ自体キューだからメモリ膨らむって理解してるんだけど違うのかな
598デフォルトの名無しさん
2021/03/31(水) 13:36:46.22ID:jIuPTrt2 >>596
メモリに載らないのはパイプ、みたいにバカの一つ覚えしてるんですけど、落とし穴あったりするんですかね?
バッファリングモードには一応気をつけてるつもりですが、詰まらないようにflushを書き加えて再コンパイルしたり
さすがにインタプリタまでは手を入れませんが…
パイプ避けるとなると、
ファイルを100くらいに細かく割り、ループ内で各ファイルを順にメモリマップ、regex掛けて(マッチ情報、ファイル名、行番号)をdbmsに格納
目ぼしいマッチ情報をクエリで拾いながら、(ファイル名、行番号)でシークしてマッチ部分に処理を適用&db書き戻し
って感じになりますかね?
メモリに載らないのはパイプ、みたいにバカの一つ覚えしてるんですけど、落とし穴あったりするんですかね?
バッファリングモードには一応気をつけてるつもりですが、詰まらないようにflushを書き加えて再コンパイルしたり
さすがにインタプリタまでは手を入れませんが…
パイプ避けるとなると、
ファイルを100くらいに細かく割り、ループ内で各ファイルを順にメモリマップ、regex掛けて(マッチ情報、ファイル名、行番号)をdbmsに格納
目ぼしいマッチ情報をクエリで拾いながら、(ファイル名、行番号)でシークしてマッチ部分に処理を適用&db書き戻し
って感じになりますかね?
599デフォルトの名無しさん
2021/03/31(水) 13:39:03.95ID:jIuPTrt2 >>597
プロセスの使用メモリ見ながらバッファリングは調整してますが、regex処理系のメモリ使用量がI/Oの収支と合ってないのでキャッシュだと思います
プロセスの使用メモリ見ながらバッファリングは調整してますが、regex処理系のメモリ使用量がI/Oの収支と合ってないのでキャッシュだと思います
600デフォルトの名無しさん
2021/03/31(水) 14:03:15.96ID:c0V7LnWa highwayとかであかんの?
601デフォルトの名無しさん
2021/03/31(水) 14:18:33.85ID:AtIsL56M いや合ってるのかな…シェルの知識が乏しいので
基本はスループット最大化を目指してエンジンとパイプ前後のバッファリングモードを調整で合ってますよね?
linux/bashだと改行待ちで詰まりやすいのでstdbufが効くならそれで、効かないなら強制フラッシュ
win/pwsh6&7のパイプラインは逆にバッファリング殆ど貯めないようで、pythonだとio.Streamでかなり改善しました
>>600
詳しく!
regex highwayあたりでググってもノイズだらけです
基本はスループット最大化を目指してエンジンとパイプ前後のバッファリングモードを調整で合ってますよね?
linux/bashだと改行待ちで詰まりやすいのでstdbufが効くならそれで、効かないなら強制フラッシュ
win/pwsh6&7のパイプラインは逆にバッファリング殆ど貯めないようで、pythonだとio.Streamでかなり改善しました
>>600
詳しく!
regex highwayあたりでググってもノイズだらけです
602デフォルトの名無しさん
2021/03/31(水) 18:56:13.01ID:Vc5hrOQS 正規表現が向いてる用途かどうか微妙だなぁ
少ないデータ量で目的にあったライブラリを使ってみて性能の最適化はそれ次第だな
https://www.rdkit.org/docs_jp/Supplementary_Text_jp.html#jp-notes-6
データの中身と検索用途にあったデータベースに入れて
速度は並列度を上げるほうが楽でメンテもしやすくて速度も出やすいような
少ないデータ量で目的にあったライブラリを使ってみて性能の最適化はそれ次第だな
https://www.rdkit.org/docs_jp/Supplementary_Text_jp.html#jp-notes-6
データの中身と検索用途にあったデータベースに入れて
速度は並列度を上げるほうが楽でメンテもしやすくて速度も出やすいような
603デフォルトの名無しさん
2021/03/31(水) 19:14:36.42ID:AtIsL56M >>602
RDkitもちろん使ってるよー
SMILESの検索性上げたのがInChIで、その辺扱ったり、代表的な特徴量を生成するライブラリは沢山あるんだけど、もうやり尽くされた感じで
既存のデータが正規表現で扱う想定のフォーマットだから、まずは正規表現で引っ掛けて独自フォーマットに変換、という感じです
あと、勝手にオンラインから拾って来てくれたり便利なんだけど、10GB単位のリクエスト送りまくるとアク禁食らいそうだから、こっそりゴッソリ落としてきたw
PowerShellの正規表現がちゃんとコンパイルできる事や、パイプの属性が細かく指定できてかなり速い事に気付いた、灯台下暗し
ちょっとスレチぎみですまなかった
目処が付いたら効率的な正規表現とかまた相談に来ます
RDkitもちろん使ってるよー
SMILESの検索性上げたのがInChIで、その辺扱ったり、代表的な特徴量を生成するライブラリは沢山あるんだけど、もうやり尽くされた感じで
既存のデータが正規表現で扱う想定のフォーマットだから、まずは正規表現で引っ掛けて独自フォーマットに変換、という感じです
あと、勝手にオンラインから拾って来てくれたり便利なんだけど、10GB単位のリクエスト送りまくるとアク禁食らいそうだから、こっそりゴッソリ落としてきたw
PowerShellの正規表現がちゃんとコンパイルできる事や、パイプの属性が細かく指定できてかなり速い事に気付いた、灯台下暗し
ちょっとスレチぎみですまなかった
目処が付いたら効率的な正規表現とかまた相談に来ます
604デフォルトの名無しさん
2021/03/31(水) 23:36:10.16ID:1Z3UgTKy 正規表現を考えた人にノーベル賞を授与すべきと思うが
まだ生きているのか、何賞がいいのかなどよくわからない
まだ生きているのか、何賞がいいのかなどよくわからない
605デフォルトの名無しさん
2021/04/01(木) 18:26:16.61ID:+gZ88zdN606デフォルトの名無しさん
2021/04/01(木) 21:17:20.81ID:B5PjUTjB ed書いてたよね?あれが最初なのか
607デフォルトの名無しさん
2021/04/01(木) 21:58:44.86ID:6NDtmvbq 正規表現を考えたのはケン・トンプソンではないみたいだけど
608デフォルトの名無しさん
2021/04/02(金) 03:22:50.55ID:XNApZvfR Wikipedia見た限りでは、UNIXツールに導入したのはケン・トンプソンで間違いなさそう
オリジナルQED(正規表現なし)→CTSS版QED(ケン開発、正規表現導入)→Multics版QED→ed→vi→...の流れで合ってる?
#チラ裏
正規表現発展の歴史って
...→ed→(grep,sed)→awk→Perl→その他諸々
だと思ってたんだけと、カーニハン先生が去年出した(今頃気づいた)UNIX回顧録の目次見てたら、実際は
...→grep(UNIX第6版:1975)→sed,awk(UNIX第7版:1976-1979)→...
とawkがsedとほぼ同時期のリリースだったらしい事に気づいて今更びっくりしてる
AWK本の邦訳の出版が1989年だし、多分それで勘違いしてたんだな
...あれ?wikiぺ見たらsedの初登場は1973-74??じゃあ時系列自体は最初の認識であってるのかな
オリジナルQED(正規表現なし)→CTSS版QED(ケン開発、正規表現導入)→Multics版QED→ed→vi→...の流れで合ってる?
#チラ裏
正規表現発展の歴史って
...→ed→(grep,sed)→awk→Perl→その他諸々
だと思ってたんだけと、カーニハン先生が去年出した(今頃気づいた)UNIX回顧録の目次見てたら、実際は
...→grep(UNIX第6版:1975)→sed,awk(UNIX第7版:1976-1979)→...
とawkがsedとほぼ同時期のリリースだったらしい事に気づいて今更びっくりしてる
AWK本の邦訳の出版が1989年だし、多分それで勘違いしてたんだな
...あれ?wikiぺ見たらsedの初登場は1973-74??じゃあ時系列自体は最初の認識であってるのかな
609デフォルトの名無しさん
2021/04/02(金) 11:22:21.17ID:BO0mfYkz610デフォルトの名無しさん
2021/04/02(金) 11:40:50.71ID:ebi/L5xP 別に正規表現である意義もそんなにないと思うし、どうでもいいのでは?
611デフォルトの名無しさん
2021/04/02(金) 11:42:32.54ID:2zuzxBMS >>610
「正規表現でない」とは?
「正規表現でない」とは?
612デフォルトの名無しさん
2021/04/02(金) 23:12:52.23ID:2IXJa8pf613デフォルトの名無しさん
2021/04/02(金) 23:18:36.72ID:nU9EtL7E 論理の場で非論理的な煽り合いはやめて欲しい
614デフォルトの名無しさん
2021/04/03(土) 06:56:50.00ID:mJPsJJNM615デフォルトの名無しさん
2021/04/03(土) 13:40:38.89ID:vSOTAguS 609は、『604は「実装した人に賞を」とは言ってないじゃん(あくまで考案した人に賞を)』と言ってるにすぎん
616デフォルトの名無しさん
2021/04/03(土) 15:45:43.43ID:MnG7Frze 言ってもないことで絡まれる604が不憫だわ
基地害に絡まれるってこういうことなだな...
基地害に絡まれるってこういうことなだな...
617デフォルトの名無しさん
2021/04/03(土) 16:32:17.92ID:cg+oQawH >>616
不憫なのは君の頭の悪さだろうな
不憫なのは君の頭の悪さだろうな
618デフォルトの名無しさん
2021/04/03(土) 16:39:50.38ID:uAN7ehAC 604 「正規表現を考えた人にノーベル賞を授与すべき」
605「正規表現考えたのはケン・トンプソン」
(ケン・トンプソンはコンピュータ科学分野のノーベル賞と言われるチューリング賞を受賞済み)
607 「正規表現を考えたのはケン・トンプソンではない」
608 「Wikipedia見た限りでは、UNIXツールに導入したのはケン・トンプソンで間違い」
609 「UNIXツールに導入したのと正規表現を考案したのとは全然別」
この流れで下の文の意味が分からないなら小学校からやり直したほうがいい
「604は正規表現をUNIXツールに導入した人にノーベル賞授与すべきだと言ってるのかな?」
605「正規表現考えたのはケン・トンプソン」
(ケン・トンプソンはコンピュータ科学分野のノーベル賞と言われるチューリング賞を受賞済み)
607 「正規表現を考えたのはケン・トンプソンではない」
608 「Wikipedia見た限りでは、UNIXツールに導入したのはケン・トンプソンで間違い」
609 「UNIXツールに導入したのと正規表現を考案したのとは全然別」
この流れで下の文の意味が分からないなら小学校からやり直したほうがいい
「604は正規表現をUNIXツールに導入した人にノーベル賞授与すべきだと言ってるのかな?」
619デフォルトの名無しさん
2021/04/03(土) 17:01:43.10ID:jUXnOQwo 絡まれてるのは604ではなく609
ってとこまで読んだ
ってとこまで読んだ
620デフォルトの名無しさん
2021/04/03(土) 17:17:48.40ID:vSOTAguS 正に
609が不憫だ
609が不憫だ
621デフォルトの名無しさん
2021/04/03(土) 17:20:20.99ID:3054knRU622デフォルトの名無しさん
2021/04/03(土) 18:38:52.17ID:nkSIG8qO >>618
>608 「Wikipedia見た限りでは、UNIXツールに導入したのはケン・トンプソンで間違い」
608 「Wikipedia見た限りでは、UNIXツールに導入したのはケン・トンプソンで間違いない」
>608 「Wikipedia見た限りでは、UNIXツールに導入したのはケン・トンプソンで間違い」
608 「Wikipedia見た限りでは、UNIXツールに導入したのはケン・トンプソンで間違いない」
623デフォルトの名無しさん
2021/04/03(土) 19:36:29.47ID:fbz7uNem624デフォルトの名無しさん
2021/04/03(土) 20:58:53.19ID:vSOTAguS 「604は言ってないぞ」と609が指摘しただけ
その609になぜ食いつくんだよ
その609になぜ食いつくんだよ
625デフォルトの名無しさん
2021/04/03(土) 21:13:29.22ID:HBbZRCot まだ続くの?
626デフォルトの名無しさん
2021/04/03(土) 21:27:51.22ID:2eiD4/1n そんなに感情的になる要素見当たらないんだけど何に反応しちゃったのか?
627デフォルトの名無しさん
2021/04/03(土) 22:05:45.23ID:fbz7uNem628デフォルトの名無しさん
2021/04/03(土) 22:13:04.80ID:vSOTAguS えー誰でもそうとしか解釈できないだろ
629デフォルトの名無しさん
2021/04/03(土) 22:13:58.62ID:vSOTAguS あまりに国語力が平均以下なんだな
630デフォルトの名無しさん
2021/04/03(土) 22:22:18.05ID:vSOTAguS 発言者の意図したものとか行間を読むとかできないで、その表面しか見ないのはアスペの特徴とか
631デフォルトの名無しさん
2021/04/03(土) 22:41:29.99ID:AcE4W092 誰でも ⇒ ID:vSOTAguS のみ
まあこの後に単発が来るのかもしれないけどw
まあこの後に単発が来るのかもしれないけどw
632デフォルトの名無しさん
2021/04/03(土) 23:35:04.26ID:fsqx4uGu633デフォルトの名無しさん
2021/04/03(土) 23:40:31.67ID:jUXnOQwo 609の意図を理解できない読者がいる以上、「誰でも」という認識は誤解と思う
634デフォルトの名無しさん
2021/04/04(日) 02:08:54.97ID:842owbNJ 「〜だと言ってるのかな?」
これは
(実際には言ってやしないだろ?)と言う言葉が省略されてる
というか省略するのが普通で通常なら十分に読み取れるはず
これは
(実際には言ってやしないだろ?)と言う言葉が省略されてる
というか省略するのが普通で通常なら十分に読み取れるはず
635デフォルトの名無しさん
2021/04/04(日) 02:26:12.96ID:+j1dsc1H もうええやん
609の文章を正しく読み取る能力の無い奴にそもそもこの板は向いてない
609の文章を正しく読み取る能力の無い奴にそもそもこの板は向いてない
636デフォルトの名無しさん
2021/04/04(日) 02:42:10.15ID:zADfh3JJ 相手が日本語書いてるからと言って通じるとは限らない
言葉の通じないバカを言いくるめようとするからこうなる
相手に言葉が通じるか見極めるスキルと耐性・スルー力を身に着けろ
言葉の通じないバカを言いくるめようとするからこうなる
相手に言葉が通じるか見極めるスキルと耐性・スルー力を身に着けろ
637デフォルトの名無しさん
2021/04/04(日) 02:44:32.45ID:842owbNJ 喧嘩するにも同程度の知能を有してないとダメってことだな
638デフォルトの名無しさん
2021/04/04(日) 06:18:23.10ID:Da11tGDT 単発わらわら湧いてて笑うわ
どっちが必死なんだかw
どっちが必死なんだかw
639デフォルトの名無しさん
2021/04/07(水) 17:35:35.06ID:V6KO8k9b >>604 は単に偉大な先人に感謝してるだけだと思うんだが…
「正規表現を考えた人」って表現したのがまずかったのか?
「正規表現を考えた人」って表現したのがまずかったのか?
640デフォルトの名無しさん
2021/04/07(水) 17:51:25.47ID:tjlM1gbN もういいからやめろ
641デフォルトの名無しさん
2021/04/07(水) 23:04:12.41ID:Gfnmricb >>639
ちょっとアレな人が絡んできただけw
ちょっとアレな人が絡んできただけw
642デフォルトの名無しさん
2021/04/08(木) 11:35:26.71ID:GjjHuqzu まだおさまらないてどんだけ悔しかったんだよww
643デフォルトの名無しさん
2021/04/08(木) 11:39:17.18ID:ADplJe5S バカが身の程しらずにもこのスレに迷い込んでくるから
644デフォルトの名無しさん
2021/04/11(日) 15:15:06.07ID:gwmbiGIQ ●Regular Expressionの使用環境
C#
●検索か置換か?
置換
●説明
アダルトビデオDBから取得したタイトルの最後が
女優名だった場合は消したい
●対象データ
女優 |タイトル
-----------------------------
三上悠亜 |下着モデルをさせられて… フェチズム9ランジェリーSpecial 三上悠亜
三上悠亜 |三上悠亜のPLATINUM SOAP
高橋しょう子|バキュームフェラ大好きお姉さんのディープスロート・たっぷり射精・追撃おしゃぶり 高橋しょう子
高橋しょう子|高橋しょう子 初BEST 12タイトル720分
●希望する結果
女優 |タイトル
-----------------------------
三上悠亜 |下着モデルをさせられて… フェチズム9ランジェリーSpecial
三上悠亜 |三上悠亜のPLATINUM SOAP
高橋しょう子|バキュームフェラ大好きお姉さんのディープスロート・たっぷり射精・追撃おしゃぶり
高橋しょう子|高橋しょう子 初BEST 12タイトル720分
C#
●検索か置換か?
置換
●説明
アダルトビデオDBから取得したタイトルの最後が
女優名だった場合は消したい
●対象データ
女優 |タイトル
-----------------------------
三上悠亜 |下着モデルをさせられて… フェチズム9ランジェリーSpecial 三上悠亜
三上悠亜 |三上悠亜のPLATINUM SOAP
高橋しょう子|バキュームフェラ大好きお姉さんのディープスロート・たっぷり射精・追撃おしゃぶり 高橋しょう子
高橋しょう子|高橋しょう子 初BEST 12タイトル720分
●希望する結果
女優 |タイトル
-----------------------------
三上悠亜 |下着モデルをさせられて… フェチズム9ランジェリーSpecial
三上悠亜 |三上悠亜のPLATINUM SOAP
高橋しょう子|バキュームフェラ大好きお姉さんのディープスロート・たっぷり射精・追撃おしゃぶり
高橋しょう子|高橋しょう子 初BEST 12タイトル720分
645デフォルトの名無しさん
2021/04/11(日) 16:16:34.91ID:RGQ7rYBB ●Regular Expressionの使用環境
Windows PowerShell
●検索か置換か?
置換
●説明
「秒・コンマ」を「時・分・秒・コンマ」に置換
●対象データ
start="123.45"
●希望する結果
start="00:02:03.45"
よろしくお願いします
割り算の商とあまりはPowerShellの関数で
2 = [int](123/60)
3 = 123 % 60
で求められます
Windows PowerShell
●検索か置換か?
置換
●説明
「秒・コンマ」を「時・分・秒・コンマ」に置換
●対象データ
start="123.45"
●希望する結果
start="00:02:03.45"
よろしくお願いします
割り算の商とあまりはPowerShellの関数で
2 = [int](123/60)
3 = 123 % 60
で求められます
646デフォルトの名無しさん
2021/04/11(日) 16:38:01.79ID:j2wFoRQW 鬼雲
^(\S+)[ ]*|.+\K\s++\1$
^([^|]+)[ ]*|.+\K\s++\1$
.Net だとこんな感じ?未確認
(?<=^([^|]+?)\s*|.+)(?>\s+)\1$
空文字に置換
^(\S+)[ ]*|.+\K\s++\1$
^([^|]+)[ ]*|.+\K\s++\1$
.Net だとこんな感じ?未確認
(?<=^([^|]+?)\s*|.+)(?>\s+)\1$
空文字に置換
647デフォルトの名無しさん
2021/04/11(日) 17:10:39.69ID:Mhxpz1MA >>645
[TimeSpan]::new(([double]$start)*10000000).tostring("hh\:mm\:ss\.ff")
[TimeSpan]::new(([double]$start)*10000000).tostring("hh\:mm\:ss\.ff")
648デフォルトの名無しさん
2021/04/11(日) 21:30:29.49ID:LXnW0jT4 >>644
Ruby なら、そういう関数がある
delete_suffix!(suffix) -> self | nil
self の末尾から、破壊的に suffix を削除します
[PARAM] suffix:
末尾から削除する、文字列を指定します
[RETURN]
削除した場合は self、変化しなかった場合は nil
"hello".delete_suffix!("llo") # => "he"
"hello".delete_suffix!("hel") # => nil
Ruby なら、そういう関数がある
delete_suffix!(suffix) -> self | nil
self の末尾から、破壊的に suffix を削除します
[PARAM] suffix:
末尾から削除する、文字列を指定します
[RETURN]
削除した場合は self、変化しなかった場合は nil
"hello".delete_suffix!("llo") # => "he"
"hello".delete_suffix!("hel") # => nil
649645
2021/04/11(日) 21:41:09.21ID:RGQ7rYBB できました!
650デフォルトの名無しさん
2021/04/11(日) 21:55:24.47ID:Mhxpz1MA >>644
.replace(/^(([^\s| ]+)[\s ]*|.+?)[\s ]*\2[\s ]*$/gm, "$1")
.replace(/^(([^\s| ]+)[\s ]*|.+?)[\s ]*\2[\s ]*$/gm, "$1")
651デフォルトの名無しさん
2021/04/11(日) 22:20:20.90ID:Mhxpz1MA .replace(/^[ ]*(([^|]+)[ ]*|.+?)[ ]*\2[ ]*$/gm, "$1")
行先頭に空白がある場合が抜けてた(\sは半角スペースに変更)
姓名の間にスペースある場合も同じデータならマッチする
三上 悠亜 |下着モデルをさせられて… フェチズム9ランジェリーSpecial 三上 悠亜
行先頭に空白がある場合が抜けてた(\sは半角スペースに変更)
姓名の間にスペースある場合も同じデータならマッチする
三上 悠亜 |下着モデルをさせられて… フェチズム9ランジェリーSpecial 三上 悠亜
652デフォルトの名無しさん
2021/04/15(木) 17:26:54.76ID:n7ib2P7L phpの実装前提です。
以下のサイトについて質問です。
https://www.javadrive.jp/regex-basic/sample/index13.html
[a-zA-Z0-9_+-]+(.[a-zA-Z0-9_+-]+)*@
で以下のような文字列の表現らしいのですが、
aaaaaaaaaaa@
aaa.aaaaaaa@
aa.aa.aaaaa@
aa.aa.aa.aa@
この()の中にある.ピリオドって、メタ文字の意味ですか?
本来なら、
[a-zA-Z0-9_+-]+(/.[a-zA-Z0-9_+-]+)*@
が正しくないですか?
以下のサイトについて質問です。
https://www.javadrive.jp/regex-basic/sample/index13.html
[a-zA-Z0-9_+-]+(.[a-zA-Z0-9_+-]+)*@
で以下のような文字列の表現らしいのですが、
aaaaaaaaaaa@
aaa.aaaaaaa@
aa.aa.aaaaa@
aa.aa.aa.aa@
この()の中にある.ピリオドって、メタ文字の意味ですか?
本来なら、
[a-zA-Z0-9_+-]+(/.[a-zA-Z0-9_+-]+)*@
が正しくないですか?
653デフォルトの名無しさん
2021/04/15(木) 17:30:30.96ID:n7ib2P7L (ごめんなさい。上記修正です。。)
本来なら、
[a-zA-Z0-9_+-]+(\.[a-zA-Z0-9_+-]+)*@
が正しくないですか?
本来なら、
[a-zA-Z0-9_+-]+(\.[a-zA-Z0-9_+-]+)*@
が正しくないですか?
654デフォルトの名無しさん
2021/04/15(木) 18:09:09.76ID:2/Cpiffz 試せばすぐわかるやろ
https://regex101.com/r/weGCyh/1
https://regex101.com/r/weGCyh/1
655デフォルトの名無しさん
2021/04/15(木) 18:22:25.76ID:n7ib2P7L ありがとうございました。
こんなツール初めてしりました。
aaaaaあaaaaa@
↑でも合致しますので、ページの説明としては不適切におもいました。
こんなツール初めてしりました。
aaaaaあaaaaa@
↑でも合致しますので、ページの説明としては不適切におもいました。
656デフォルトの名無しさん
2021/04/15(木) 18:41:07.32ID:5RsSqrLU657デフォルトの名無しさん
2021/04/15(木) 18:43:40.23ID:n7ib2P7L >>656
ありがとうございました。確信がもてました!
ありがとうございました。確信がもてました!
658デフォルトの名無しさん
2021/04/16(金) 08:22:32.69ID:jY/tNYiK そんな糞サイトを見るのはやめた方がいい
659デフォルトの名無しさん
2021/04/18(日) 11:01:19.33ID:GrVz/jbm ●Regular Expressionの使用環境
C#
●検索か置換か?
検索
●説明
表のデータを名前付きでキャプチャしたい(year,month,day;open;high;low;close;volume)
日付 <td class="XXX">(?<year>\d{4})/(?<month>\d?\d)/(?<day>\d?\d)</td>
株価 <td>(?<open>[0-9,.]+)</td>\r\n
<td>(?<high>[0-9,.]+)</td>\r\n
<td>(?<low>[0-9,.]+)</td>\r\n
<td>(?<close>[0-9,.]+)</td>\r\n
<td>.*</td>\r\n<td>(?<volume>[0-9,.]+)</td>
●対象データ
<tr>
<td class="XXX">2021/04/02</td> 日付
<td class="YYY">8,510.0</td >始値
<td class="YYY">8,595.0</td> 高値
<td class="YYY">8,432.0</td> 安値
<td class="YYY">8,462.0</td> 終値
<td class="YYY">8,462.0</td> 調整後終値
<td class="YYY">4,337,300</td>出来高
</tr>
●希望する結果
<td class="XXX">(?<year>\d{4})/(?<month>\d?\d)/(?<day>\d?\d)</td>
または<td>(?<open>[0-9,.]+)</td>単独だと一致するが日付と株価を全部つなげると駄目なので一致するようにしたい
御教示よろしくお願いします
C#
●検索か置換か?
検索
●説明
表のデータを名前付きでキャプチャしたい(year,month,day;open;high;low;close;volume)
日付 <td class="XXX">(?<year>\d{4})/(?<month>\d?\d)/(?<day>\d?\d)</td>
株価 <td>(?<open>[0-9,.]+)</td>\r\n
<td>(?<high>[0-9,.]+)</td>\r\n
<td>(?<low>[0-9,.]+)</td>\r\n
<td>(?<close>[0-9,.]+)</td>\r\n
<td>.*</td>\r\n<td>(?<volume>[0-9,.]+)</td>
●対象データ
<tr>
<td class="XXX">2021/04/02</td> 日付
<td class="YYY">8,510.0</td >始値
<td class="YYY">8,595.0</td> 高値
<td class="YYY">8,432.0</td> 安値
<td class="YYY">8,462.0</td> 終値
<td class="YYY">8,462.0</td> 調整後終値
<td class="YYY">4,337,300</td>出来高
</tr>
●希望する結果
<td class="XXX">(?<year>\d{4})/(?<month>\d?\d)/(?<day>\d?\d)</td>
または<td>(?<open>[0-9,.]+)</td>単独だと一致するが日付と株価を全部つなげると駄目なので一致するようにしたい
御教示よろしくお願いします
660デフォルトの名無しさん
2021/04/18(日) 13:04:59.48ID:8BgTcnje 構造があるものは、正規表現では難しい。
スクレイピングは、Ruby で、nokogiri なら、
require 'nokogiri'
doc = Nokogiri::HTML(<<EOT)
<tr>
<td class="XXX">2021/04/02</td> 日付
<td class="YYY">8,510.0</td >始値
<td class="YYY">8,595.0</td> 高値
<td class="YYY">8,432.0</td> 安値
<td class="YYY">8,462.0</td> 終値
<td class="YYY">8,462.0</td> 調整後終値
<td class="YYY">4,337,300</td>出来高
</tr>
EOT
element = doc.at_css( 'tr > td.XXX' )
puts element.content
#=> 2021/04/02
elements = doc.css( 'tr > td.YYY' )
puts elements.map( &:content ).join( " : " )
#=> 8,510.0 : 8,595.0 : 8,432.0 : 8,462.0 : 8,462.0 : 4,337,300
スクレイピングは、Ruby で、nokogiri なら、
require 'nokogiri'
doc = Nokogiri::HTML(<<EOT)
<tr>
<td class="XXX">2021/04/02</td> 日付
<td class="YYY">8,510.0</td >始値
<td class="YYY">8,595.0</td> 高値
<td class="YYY">8,432.0</td> 安値
<td class="YYY">8,462.0</td> 終値
<td class="YYY">8,462.0</td> 調整後終値
<td class="YYY">4,337,300</td>出来高
</tr>
EOT
element = doc.at_css( 'tr > td.XXX' )
puts element.content
#=> 2021/04/02
elements = doc.css( 'tr > td.YYY' )
puts elements.map( &:content ).join( " : " )
#=> 8,510.0 : 8,595.0 : 8,432.0 : 8,462.0 : 8,462.0 : 4,337,300
661デフォルトの名無しさん
2021/04/18(日) 16:50:35.98ID:GrVz/jbm >660
回答有難うございます テストツールではじかれるのそういうことなんですか
perlでならCSSセレクタ使って取れるんですが遅くてRubyでも同じでしょうね
回答有難うございます テストツールではじかれるのそういうことなんですか
perlでならCSSセレクタ使って取れるんですが遅くてRubyでも同じでしょうね
662デフォルトの名無しさん
2021/04/18(日) 19:18:36.24ID:3ca8v7Vr >>659
対象データの各行の後ろに実際には日本語はないってことでいいんだよね?
対象データの各行の後ろに実際には日本語はないってことでいいんだよね?
663デフォルトの名無しさん
2021/04/18(日) 19:29:32.94ID:3ca8v7Vr 日付の正規表現省略</td>
<td class="YYY">(?<open>[0-9,.]+)</td>\s+<td class="YYY">(?<high>[0-9,.]+)</td>\s+以降の正規表現省略
C#(実質.NET?)の正規表現は詳しくないし試してないけど、
一般的なPerl5系列の正規表現なら\sのマッチ対象(ホワイトスペース)に
\rや\nも内包されてるので、
\s+で改行と<tdの前のスペースインデントに対応できると思う
<td class="YYY">(?<open>[0-9,.]+)</td>\s+<td class="YYY">(?<high>[0-9,.]+)</td>\s+以降の正規表現省略
C#(実質.NET?)の正規表現は詳しくないし試してないけど、
一般的なPerl5系列の正規表現なら\sのマッチ対象(ホワイトスペース)に
\rや\nも内包されてるので、
\s+で改行と<tdの前のスペースインデントに対応できると思う
664663
2021/04/18(日) 19:31:55.31ID:3ca8v7Vr >>663訂正
日付の正規表現省略</td>\s+<td class="YYY">(?<open>[0-9,.]+)</td>\s+<td class="YYY">(?<high>[0-9,.]+)</td>\s+以降の正規表現省略
日付の正規表現省略</td>\s+<td class="YYY">(?<open>[0-9,.]+)</td>\s+<td class="YYY">(?<high>[0-9,.]+)</td>\s+以降の正規表現省略
665デフォルトの名無しさん
2021/04/18(日) 19:33:30.21ID:KOpB5ISv 空白とか考慮してねんじゃねーの
提示されてるデータ見ても</td >始値だけ違ってるし
改行の扱いで転けてる可能性も
提示されてるデータ見ても</td >始値だけ違ってるし
改行の扱いで転けてる可能性も
666デフォルトの名無しさん
2021/04/18(日) 20:10:08.07ID:GrVz/jbm 対象データの後ろの日本語は注記で実際にはありません
667デフォルトの名無しさん
2021/04/18(日) 20:17:06.51ID:GrVz/jbm >663,664
有難うございました \s+ でつなげて上手くゆきました
有難うございました \s+ でつなげて上手くゆきました
668デフォルトの名無しさん
2021/04/18(日) 20:42:16.44ID:P53jdUzk Rubyくん=糖質w
669デフォルトの名無しさん
2021/04/23(金) 13:32:17.18ID:wRSxYRWl Pythonで以下の条件に当てはまる正規表現はどうしたら実現できるでしょうか。
半角英数字(大文字小文字)255文字までとハイフンのみOK
--の連続は不可。行末がハイフンで終わるのも不可
ここまではできてるんですが、どなたか知恵を頂きたいです。
^[a-zA-Z0-9-]*(?<!-)$
半角英数字(大文字小文字)255文字までとハイフンのみOK
--の連続は不可。行末がハイフンで終わるのも不可
ここまではできてるんですが、どなたか知恵を頂きたいです。
^[a-zA-Z0-9-]*(?<!-)$
670デフォルトの名無しさん
2021/04/23(金) 13:46:23.58ID:lAJIVY64 pythonなら正規表現だけで処理しなくても
抜き出した後に--が含まれるのを除くとかどうにでもなるだろ。
抜き出した後に--が含まれるのを除くとかどうにでもなるだろ。
671デフォルトの名無しさん
2021/04/23(金) 13:47:26.10ID:S2TaYi95 ^(?:(?!--)[a-zA-Z0-9-])*(?<!-)$
^(?!.*--)[a-zA-Z0-9-]*(?<!-)$
まあこの2つの書き方を覚えればいいんじゃない?
ただ空行もマッチしちゃうよ
^(?!.*--)[a-zA-Z0-9-]*(?<!-)$
まあこの2つの書き方を覚えればいいんじゃない?
ただ空行もマッチしちゃうよ
672669
2021/04/23(金) 14:25:42.69ID:wRSxYRWl673デフォルトの名無しさん
2021/04/23(金) 16:59:46.76ID:vxdqi9h5 自分で理解できない正規表現とか組み込んで、この先メンテナンスできるんだろうか。
一時的なことならいいが
一時的なことならいいが
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- NY円、一時1ユーロ=180円台まで下落…1999年のユーロ導入以来初 [蚤の市★]
- 国内ホテル、既にキャンセルも 訪日客関連業界、事態見守る ★3 [蚤の市★]
- 「どうしようもない」 ため息つくアジアの玄関口 中国の訪日自粛で−福岡市 [蚤の市★]
- 【外交】日中関係悪化、長期化の様相 2012年には自動車輸出80%減も ロイター★3 [1ゲットロボ★]
- NHK、受信料の未払い世帯に督促強化へ 民事手続きの新組織を設置 差し押さえなどの強制執行も ★2 [1ゲットロボ★]
- 橋下徹氏 外務省幹部の訪中受け「口だけ番長」へ痛烈指摘 「喧嘩は日本の完敗…なんとかっこ悪い日本か」★2 [冬月記者★]
- んなっても良いお🏡
- 【悲報】高市早苗を妄信している今の日本人見ると80年前も市民は進んで戦争協力してたんだって理解出来るよね🥺 [616817505]
- 【超悲報】中国への武力行使、世論調査で「賛成」「どちらかといえば賛成」48.8% 「反対」「どちらかといえば反対」の44.2%を上回る [314039747]
- 日本人、歴史も経済も分からず貧乏に耐えかねて第二次日中戦争を求めてしまう…ヤバイよ [819729701]
- パンダ 危機感なし [399583221]
- 【悲報】けんもめん、含蓄が読めない [389326466]
