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以降
2021/03/31(水) 13:30:47.96ID:oCEpBqBX
パイプ自体キューだからメモリ膨らむって理解してるんだけど違うのかな
2021/03/31(水) 13:36:46.22ID:jIuPTrt2
>>596
メモリに載らないのはパイプ、みたいにバカの一つ覚えしてるんですけど、落とし穴あったりするんですかね?
バッファリングモードには一応気をつけてるつもりですが、詰まらないようにflushを書き加えて再コンパイルしたり
さすがにインタプリタまでは手を入れませんが…

パイプ避けるとなると、
ファイルを100くらいに細かく割り、ループ内で各ファイルを順にメモリマップ、regex掛けて(マッチ情報、ファイル名、行番号)をdbmsに格納
目ぼしいマッチ情報をクエリで拾いながら、(ファイル名、行番号)でシークしてマッチ部分に処理を適用&db書き戻し
って感じになりますかね?
2021/03/31(水) 13:39:03.95ID:jIuPTrt2
>>597
プロセスの使用メモリ見ながらバッファリングは調整してますが、regex処理系のメモリ使用量がI/Oの収支と合ってないのでキャッシュだと思います
2021/03/31(水) 14:03:15.96ID:c0V7LnWa
highwayとかであかんの?
2021/03/31(水) 14:18:33.85ID:AtIsL56M
いや合ってるのかな…シェルの知識が乏しいので

基本はスループット最大化を目指してエンジンとパイプ前後のバッファリングモードを調整で合ってますよね?

linux/bashだと改行待ちで詰まりやすいのでstdbufが効くならそれで、効かないなら強制フラッシュ
win/pwsh6&7のパイプラインは逆にバッファリング殆ど貯めないようで、pythonだとio.Streamでかなり改善しました

>>600
詳しく!
regex highwayあたりでググってもノイズだらけです
2021/03/31(水) 18:56:13.01ID:Vc5hrOQS
正規表現が向いてる用途かどうか微妙だなぁ
少ないデータ量で目的にあったライブラリを使ってみて性能の最適化はそれ次第だな
https://www.rdkit.org/docs_jp/Supplementary_Text_jp.html#jp-notes-6

データの中身と検索用途にあったデータベースに入れて
速度は並列度を上げるほうが楽でメンテもしやすくて速度も出やすいような
2021/03/31(水) 19:14:36.42ID:AtIsL56M
>>602
RDkitもちろん使ってるよー
SMILESの検索性上げたのがInChIで、その辺扱ったり、代表的な特徴量を生成するライブラリは沢山あるんだけど、もうやり尽くされた感じで
既存のデータが正規表現で扱う想定のフォーマットだから、まずは正規表現で引っ掛けて独自フォーマットに変換、という感じです

あと、勝手にオンラインから拾って来てくれたり便利なんだけど、10GB単位のリクエスト送りまくるとアク禁食らいそうだから、こっそりゴッソリ落としてきたw

PowerShellの正規表現がちゃんとコンパイルできる事や、パイプの属性が細かく指定できてかなり速い事に気付いた、灯台下暗し

ちょっとスレチぎみですまなかった
目処が付いたら効率的な正規表現とかまた相談に来ます
2021/03/31(水) 23:36:10.16ID:1Z3UgTKy
正規表現を考えた人にノーベル賞を授与すべきと思うが
まだ生きているのか、何賞がいいのかなどよくわからない
2021/04/01(木) 18:26:16.61ID:+gZ88zdN
>>604
>>534
2021/04/01(木) 21:17:20.81ID:B5PjUTjB
ed書いてたよね?あれが最初なのか
2021/04/01(木) 21:58:44.86ID:6NDtmvbq
正規表現を考えたのはケン・トンプソンではないみたいだけど
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??じゃあ時系列自体は最初の認識であってるのかな
2021/04/02(金) 11:22:21.17ID:BO0mfYkz
UNIXツールに導入したのと正規表現を考案したのとは全然別のことだよね

>>604は正規表現をUNIXツールに導入した人にノーベル賞授与すべきだと言ってるのかな?
2021/04/02(金) 11:40:50.71ID:ebi/L5xP
別に正規表現である意義もそんなにないと思うし、どうでもいいのでは?
2021/04/02(金) 11:42:32.54ID:2zuzxBMS
>>610
「正規表現でない」とは?
2021/04/02(金) 23:12:52.23ID:2IXJa8pf
>>609
少なくとも>>604ではunixツールなんて一言も言ってないけど?
なんかデムパ受信しちゃう系の人なのかな?
2021/04/02(金) 23:18:36.72ID:nU9EtL7E
論理の場で非論理的な煽り合いはやめて欲しい
2021/04/03(土) 06:56:50.00ID:mJPsJJNM
論理とか言うなら>>609はなぜ
> >>604は正規表現をUNIXツールに導入した人にノーベル賞授与すべきだと言ってるのかな?
なんて言い出したのかを説明すべきだわね
2021/04/03(土) 13:40:38.89ID:vSOTAguS
609は、『604は「実装した人に賞を」とは言ってないじゃん(あくまで考案した人に賞を)』と言ってるにすぎん
2021/04/03(土) 15:45:43.43ID:MnG7Frze
言ってもないことで絡まれる604が不憫だわ
基地害に絡まれるってこういうことなだな...
2021/04/03(土) 16:32:17.92ID:cg+oQawH
>>616
不憫なのは君の頭の悪さだろうな
2021/04/03(土) 16:39:50.38ID:uAN7ehAC
604 「正規表現を考えた人にノーベル賞を授与すべき」
605「正規表現考えたのはケン・トンプソン」
(ケン・トンプソンはコンピュータ科学分野のノーベル賞と言われるチューリング賞を受賞済み)
607 「正規表現を考えたのはケン・トンプソンではない」
608 「Wikipedia見た限りでは、UNIXツールに導入したのはケン・トンプソンで間違い」
609 「UNIXツールに導入したのと正規表現を考案したのとは全然別」

この流れで下の文の意味が分からないなら小学校からやり直したほうがいい

「604は正規表現をUNIXツールに導入した人にノーベル賞授与すべきだと言ってるのかな?」
2021/04/03(土) 17:01:43.10ID:jUXnOQwo
絡まれてるのは604ではなく609

ってとこまで読んだ
2021/04/03(土) 17:17:48.40ID:vSOTAguS
正に
609が不憫だ
2021/04/03(土) 17:20:20.99ID:3054knRU
>>617
もうそういうレスしか返せないなら黙ってたら?
自分も辛いだろw
2021/04/03(土) 18:38:52.17ID:nkSIG8qO
>>618
>608 「Wikipedia見た限りでは、UNIXツールに導入したのはケン・トンプソンで間違い」

608 「Wikipedia見た限りでは、UNIXツールに導入したのはケン・トンプソンで間違いない」
2021/04/03(土) 19:36:29.47ID:fbz7uNem
>>618
お前はごたくを言う前に>>604が言ってもないunixツールの話をなぜ>>609が言い出したのかちゃんと説明してみろよ
2021/04/03(土) 20:58:53.19ID:vSOTAguS
「604は言ってないぞ」と609が指摘しただけ
その609になぜ食いつくんだよ
2021/04/03(土) 21:13:29.22ID:HBbZRCot
まだ続くの?
2021/04/03(土) 21:27:51.22ID:2eiD4/1n
そんなに感情的になる要素見当たらないんだけど何に反応しちゃったのか?
2021/04/03(土) 22:05:45.23ID:fbz7uNem
>>624
> 「604は正規表現をUNIXツールに導入した人にノーベル賞授与すべきだと言ってるのかな?」

> 「604は言ってないぞ」と609が指摘しただけ
って解釈しろと?
そもそもunixツールとか言ってるのは>>608だけで言ってないと指摘するなら>>605-607も含めろよ
2021/04/03(土) 22:13:04.80ID:vSOTAguS
えー誰でもそうとしか解釈できないだろ
2021/04/03(土) 22:13:58.62ID:vSOTAguS
あまりに国語力が平均以下なんだな
2021/04/03(土) 22:22:18.05ID:vSOTAguS
発言者の意図したものとか行間を読むとかできないで、その表面しか見ないのはアスペの特徴とか
2021/04/03(土) 22:41:29.99ID:AcE4W092
誰でも ⇒ ID:vSOTAguS のみ
まあこの後に単発が来るのかもしれないけどw
2021/04/03(土) 23:35:04.26ID:fsqx4uGu
>>626
ケントンプソンじゃないと指摘されたのがよほど悔しかったんだろ
>>608の言い訳がましい文章に悔しさがにじみ出てる
2021/04/03(土) 23:40:31.67ID:jUXnOQwo
609の意図を理解できない読者がいる以上、「誰でも」という認識は誤解と思う
2021/04/04(日) 02:08:54.97ID:842owbNJ
「〜だと言ってるのかな?」
これは
(実際には言ってやしないだろ?)と言う言葉が省略されてる
というか省略するのが普通で通常なら十分に読み取れるはず
2021/04/04(日) 02:26:12.96ID:+j1dsc1H
もうええやん

609の文章を正しく読み取る能力の無い奴にそもそもこの板は向いてない
2021/04/04(日) 02:42:10.15ID:zADfh3JJ
相手が日本語書いてるからと言って通じるとは限らない
言葉の通じないバカを言いくるめようとするからこうなる
相手に言葉が通じるか見極めるスキルと耐性・スルー力を身に着けろ
2021/04/04(日) 02:44:32.45ID:842owbNJ
喧嘩するにも同程度の知能を有してないとダメってことだな
2021/04/04(日) 06:18:23.10ID:Da11tGDT
単発わらわら湧いてて笑うわ
どっちが必死なんだかw
2021/04/07(水) 17:35:35.06ID:V6KO8k9b
>>604 は単に偉大な先人に感謝してるだけだと思うんだが…
「正規表現を考えた人」って表現したのがまずかったのか?
2021/04/07(水) 17:51:25.47ID:tjlM1gbN
もういいからやめろ
2021/04/07(水) 23:04:12.41ID:Gfnmricb
>>639
ちょっとアレな人が絡んできただけw
2021/04/08(木) 11:35:26.71ID:GjjHuqzu
まだおさまらないてどんだけ悔しかったんだよww
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分
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
で求められます
2021/04/11(日) 16:38:01.79ID:j2wFoRQW
鬼雲
^(\S+)[  ]*|.+\K\s++\1$
^([^|]+)[  ]*|.+\K\s++\1$

.Net だとこんな感じ?未確認
(?<=^([^|]+?)\s*|.+)(?>\s+)\1$
空文字に置換
2021/04/11(日) 17:10:39.69ID:Mhxpz1MA
>>645
[TimeSpan]::new(([double]$start)*10000000).tostring("hh\:mm\:ss\.ff")
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
649645
垢版 |
2021/04/11(日) 21:41:09.21ID:RGQ7rYBB
できました!
2021/04/11(日) 21:55:24.47ID:Mhxpz1MA
>>644
.replace(/^(([^\s| ]+)[\s ]*|.+?)[\s ]*\2[\s ]*$/gm, "$1")
2021/04/11(日) 22:20:20.90ID:Mhxpz1MA
.replace(/^[  ]*(([^|]+)[  ]*|.+?)[  ]*\2[  ]*$/gm, "$1")
行先頭に空白がある場合が抜けてた(\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_+-]+)*@

が正しくないですか?
653デフォルトの名無しさん
垢版 |
2021/04/15(木) 17:30:30.96ID:n7ib2P7L
(ごめんなさい。上記修正です。。)
本来なら、

[a-zA-Z0-9_+-]+(\.[a-zA-Z0-9_+-]+)*@

が正しくないですか?
2021/04/15(木) 18:09:09.76ID:2/Cpiffz
試せばすぐわかるやろ
https://regex101.com/r/weGCyh/1
655デフォルトの名無しさん
垢版 |
2021/04/15(木) 18:22:25.76ID:n7ib2P7L
ありがとうございました。
こんなツール初めてしりました。


aaaaaあaaaaa@
↑でも合致しますので、ページの説明としては不適切におもいました。
2021/04/15(木) 18:41:07.32ID:5RsSqrLU
>>652
メールアドレスのアカウント部の判別って意味だろうから、
メタ文字ではなく本来\が必要な、文字としてのドットだね
657デフォルトの名無しさん
垢版 |
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>単独だと一致するが日付と株価を全部つなげると駄目なので一致するようにしたい

御教示よろしくお願いします
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
661デフォルトの名無しさん
垢版 |
2021/04/18(日) 16:50:35.98ID:GrVz/jbm
>660
回答有難うございます テストツールではじかれるのそういうことなんですか
perlでならCSSセレクタ使って取れるんですが遅くてRubyでも同じでしょうね
2021/04/18(日) 19:18:36.24ID:3ca8v7Vr
>>659
対象データの各行の後ろに実際には日本語はないってことでいいんだよね?
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の前のスペースインデントに対応できると思う
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+以降の正規表現省略
665デフォルトの名無しさん
垢版 |
2021/04/18(日) 19:33:30.21ID:KOpB5ISv
空白とか考慮してねんじゃねーの
提示されてるデータ見ても</td >始値だけ違ってるし
改行の扱いで転けてる可能性も
666デフォルトの名無しさん
垢版 |
2021/04/18(日) 20:10:08.07ID:GrVz/jbm
対象データの後ろの日本語は注記で実際にはありません
667デフォルトの名無しさん
垢版 |
2021/04/18(日) 20:17:06.51ID:GrVz/jbm
>663,664
有難うございました \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-]*(?<!-)$
2021/04/23(金) 13:46:23.58ID:lAJIVY64
pythonなら正規表現だけで処理しなくても
抜き出した後に--が含まれるのを除くとかどうにでもなるだろ。
2021/04/23(金) 13:47:26.10ID:S2TaYi95
^(?:(?!--)[a-zA-Z0-9-])*(?<!-)$
^(?!.*--)[a-zA-Z0-9-]*(?<!-)$
まあこの2つの書き方を覚えればいいんじゃない?
ただ空行もマッチしちゃうよ
672669
垢版 |
2021/04/23(金) 14:25:42.69ID:wRSxYRWl
>>670
確かにそうですが、ちょっと格好つけたかったんです。

>>671
おぉぉぉぉありがとうございます。
とっても助かりました!!
おかげでこの先、頑張れそうです。。。(定時まで)
2021/04/23(金) 16:59:46.76ID:vxdqi9h5
自分で理解できない正規表現とか組み込んで、この先メンテナンスできるんだろうか。
一時的なことならいいが
2021/04/23(金) 17:20:20.44ID:S2TaYi95
この程度見れば何してるか理解できるよね
2つは記述は似てるけど考え方が少し違う
2021/04/23(金) 18:40:17.97ID:WE1AtRNI
^(?>-?+[a-z0-9]){0,255}$
2021/04/23(金) 20:39:56.15ID:EZOqnzXJ
条件が曖昧なので2通り(定時回ってそうだが)

# ハイフン含めて255文字
^([0-9A-Za-z]|-(?!(-|$))){1,255}$

# ハイフンは255文字に含めない
^(-?[0-9A-Za-z]){1,255}$

>>675
試したら"?>"など知らんって言われた
2021/04/23(金) 21:20:25.48ID:S2TaYi95
?+も無いみたい
2021/04/24(土) 01:22:36.39ID:fpQdUE+5
先読み後読みは方言が多いものね
2021/04/25(日) 23:25:43.60ID:AhiBFSkY
単純に ^(-?[a-zA-Z0-9])[0,255]$ とかで良かったんじゃないかな
2021/04/25(日) 23:27:08.69ID:AhiBFSkY
>>676と重複した。スマン
681669
垢版 |
2021/04/26(月) 16:56:04.35ID:SkU1AL8m
みなさんありがとうございます。
こんな正規表現良く書いたねーって先輩のレビュアーに言われて、
詳しく説明してって言われたんですが説明できなかったので、
頂いた数々の秘技を頑張って理解していこうと思います。(定時まで)
2021/05/07(金) 02:26:32.28ID:FTeVmJ7m
以前使っていた正規表現の質問専用スレが見当たらないからここで聞きたい
javascriptで以下のマッチングを行うとマッチするけど、キャプチャの分が取得されない。
どうしたらいいんだろう

let abc = "/abcd/357/1/";
let regex = /^\/abcd\/(\d+)\/\d+\/$/gi;

let result = abc.match(regex);

console.log(result.length);

この出力が1になる。(\d+)も含めた2になってほしい
2021/05/07(金) 02:44:53.78ID:O1URPzeE
matchAllかwhile regex.exec(string) !== null
2021/05/07(金) 03:03:26.43ID:FTeVmJ7m
解決したわ
gあるとキャプチャ取得されないって書いてあったわ

>>683
すまん
2021/05/18(火) 11:17:29.67ID:XAxheHxj
元データ
1621299591.842348,378,666,111,84

これをサブパターンで以下のように抽出したいです。
1621299591.842348
378
666
111
84

最終的な目的としては、ZabbixでCSV形式ログから値を取りたいです。
いろんなサイトを参考にしてるんですが、簡単そうに見えてこれが実現できる例が見つけられず。
2021/05/18(火) 11:25:45.08ID:ZvUkaH8s
([^,]*)
じゃあかん?
2021/05/18(火) 11:27:05.69ID:YmpO7+1q
>>685
それって正規表現で処理する部分なのか?
本当にそのままのデータなら/,/¥n/だろ。
2021/05/18(火) 12:29:17.50ID:AY6+4ZvQ
>>685
Zabbixは1つの値で1つのitemなので
(.*),(.*),(.*),(.*),(.*)みたいな正規表現を使って$1~$5を出力するそれぞれ別の依存itemを登録するんじゃない?
689685
垢版 |
2021/05/18(火) 13:08:11.81ID:XAxheHxj
ありがとうございます。
logrt["/var/log/^.*\.txt$","^([0-9]+).([0-9]+),([0-9]+),([0-9]+),([0-9]+),([0-9]+)$",,,,\3,,]
こんな感じでできました。
ご指摘通り\3のところを\4や\5にしたアイテムを別途作成。
2021/05/18(火) 14:48:27.97ID:AY6+4ZvQ
>>689
ログファイルを指定するアイテムは1つにして
それに依存する依存アイテムを5つ作ったほうが処理効率がいいと思う
https://www.zabbix.com/documentation/current/manual/config/items/itemtypes/dependent_items
691685
垢版 |
2021/05/18(火) 17:53:24.64ID:XAxheHxj
>>690
依存アイテムの保存前処理で上の正規表現入れてできました!
2021/05/20(木) 17:15:23.25ID:Bfk5GZud
こんにちは
質問です

●Regular Expressionの使用環境
普通のテキストファイル
いま Sublime text を使ってますが無料のエディタなら何でも使います

●検索か置換か?
置換

●説明
各パラグラフの1行目を2行目以下の全ての行に加えたい
1行目はパラグラフごとに異なり、2行目以下はすべて異なる

●対象データ
/system/app
AntHalService
AutoRegistration
BasicDreams

/system/priv-app
AutoKillService
BackupRestoreConfirmation

●希望する結果
AntHalService^=/system/app/AntHalService
AutoRegistration^=/system/app/AutoRegistration
BasicDreams^=/system/app/BasicDreams
AutoKillService^=/system/priv-app/AutoKillService
BackupRestoreConfirmation^=/system/priv-app/BackupRestoreConfirmation

よろしくお願いします
2021/05/20(木) 17:34:20.04ID:HTt3W2mn
正規表現だけで可能なのか?
適当なスクリプト使った方が手っ取り早いような。
2021/05/20(木) 17:50:54.95ID:yRtliBGo
まずパラグラフをどう判断するかの条件も書かれてないしね
書かれてる2項目だけでいいならできるけど、
望むことはパラグラフの1行目の自動取得だろうし
2021/05/20(木) 17:55:02.71ID:HTt3W2mn
>>694
ちなみに、上記限定だったらどう書くの?
自分はちょっと思い浮かばない。
2021/05/20(木) 18:33:52.42ID:+Y6kAz1b
各段落1行目の前が空行でそれ以外に空行は無い とか
1行目行頭だけが"/"で他の行頭には"/"は無い とか
1行目だけが保ち得る条件が必要なのと

各段落の行数が同じで無いとキャプチャは出来ても置換で参照使えなくね?

・1行目の一意な条件
・段落の行数が一定
このふたつの条件満たさないと正規表現だけでは無理じゃね?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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