[過去ログ] Regular Expression(正規表現) Part16 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
268: 2022/05/25(水)22:10 ID:SBYC3EV0(1) AAS
(?#何の処理)
269(1): 2022/05/26(木)10:08 ID:Nn08GFXz(1/3) AAS
●Regular Expressionの使用環境
PowerShell 7.2.4
●検索か置換か?
置換(-replaceもしくは[regex]::Replace)
もしくは抽出(-match)
●説明
ドメインからサブドメインを取り除いた値が欲しい
●対象データ
www.example.com
hoge.www.example.com
省6
270: 2022/05/26(木)10:11 ID:Nn08GFXz(2/3) AAS
>>269
すいません、これだと「example.com$でいいだろ」になりますね
バラバラなURL、つまり
●対象データ
www.example.com
hoge.www.test.com
hoge.hoge.www.foo.com
●希望する結果
example.com
test.com
省2
271(1): 2022/05/26(木)10:34 ID:6qaNDFBW(1) AAS
powershellでの書き方は分からんが
[^.]++\.com$
272(1): 2022/05/26(木)10:51 ID:Ax+O2qu3(1/2) AAS
>>271
それで得られるの.comドメインだけじゃね
273(1): 2022/05/26(木)11:26 ID:JFz3AkL/(1) AAS
(?m:((?:[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9]*)\.[a-zA-Z]{2,})$)
274(2): 2022/05/26(木)13:28 ID:DqYj7elt(1) AAS
[a-zA-Z0-9]
って、何かもっと短いパターンに置き換えられないのかな?
275(1): 2022/05/26(木)13:51 ID:Nn08GFXz(3/3) AAS
>>272
ごめんなさい。私がちゃんと.com以外の例を出してませんでした。
>>273
ありがとうございます。
[regex]::Matchesの方で抽出できました。
もしよければ、今後のためにどういう意味の正規表現になってるかお教えいただけませんか
行末→$)
エスケープして.(ドット)+2文字以上の文字→\.[a-zA-Z]{2,})
までは分かるのですが、
(?:[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9]*)
省3
276: 2022/05/26(木)14:03 ID:Ax+O2qu3(2/2) AAS
>>274
/S
277: 2022/05/26(木)14:08 ID:gYa8SY15(1) AAS
>>274
処理系にもよるけど\dと[0-9]は同等でないこともある(漢数字にもマッチする処理系や環境がある)
[:alpha:]は使えない処理系もある
>>275
ドメイン名の制約を正規化
mは行単位処理指定(一般的には不要)
278: 2022/05/26(木)14:26 ID:SI03/myz(1) AAS
結局太古からの文字クラスが役に立つよな
279: 2022/05/26(木)14:57 ID:0Pd9G99m(1) AAS
5ch.net
2345.com
280: 2022/05/26(木)19:34 ID:DerQuI+6(1) AAS
8823
281(1): 2022/06/15(水)16:12 ID:D17rKkfp(1) AAS
Pythonで、下記のような仕組みを作りたいと思っています。
1 テキストを入力する。
2 あらかじめ用意してある複数の正規表現のパターンでテキストを検索し、
それぞれのパターンにマッチする部分のテキストを色分けする。
3 それぞれの色ごとに、別々の処理をする。
こう言う表示をするためのフロントエンドというか、ライブラリというか、
そう言うものはないでしょうか。
例えば、VBAなら、エクセルやWordの文字プロパティを操作すればできると思うのですが、
そう言うもののPython版というか…
282: 2022/06/15(水)17:05 ID:GqhFDJ5g(1) AAS
>>281
スレチ
283: 2022/06/15(水)20:56 ID:bRSTMa0S(1/2) AAS
こういうの不思議なんだけど、
仕組みを作りたいと思っていて、ライブラリやフレームワークすら選べてないのに、
なんで使用言語は決まってるんだろうか
284: 2022/06/15(水)21:12 ID:74xVOU49(1) AAS
そのライブラリはlispとprologとVHDLしかありませんって言われたら困るし
285: 2022/06/15(水)21:17 ID:bRSTMa0S(2/2) AAS
そしたらその言語選ぶだけじゃないかな
286: 2022/06/16(木)02:58 ID:5RJuUFJv(1) AAS
JSで作ってブラウザ上で動かすのがよさそう
287(1): 2022/06/24(金)15:59 ID:P24pDyi3(1/2) AAS
●Regular Expressionの使用環境
python3
●検索か置換か?
検索
●説明
START~次のSTARTの直前までをマッチングさせたい
START含む行から文字列足して行けば同じ事は出来るんですが正規表現ではどのように書くのか分からないのでお願いします
●対象データ
START 1: abcd
hoge
省7
288(1): 2022/06/24(金)16:36 ID:ECcLc/fl(1) AAS
>>287
START(?:(?!START)[\S\s])*
289: 2022/06/24(金)16:39 ID:P24pDyi3(2/2) AAS
>>288
早速の回答ありがとうございます
希望した結果が得れました
290(1): 2022/06/24(金)18:26 ID:0z9KCe6G(1) AAS
template<>引数にはclassでない定数リテラルを指定できるのでtypenameのほうが名称としてしっくりくる
291(1): 2022/06/25(土)08:38 ID:hlZoB8IO(1) AAS
Onigmoの非包含オペレータのバグFixが来た
Fix absence operator #163
外部リンク:github.com
こういうのをサラっと直してしまう人はカッコイイね、nomotoさんありがとう!
292: 2022/06/25(土)10:59 ID:23CjKpU2(1) AAS
>>290
2chスレ:tech
293: 2022/06/28(火)22:14 ID:r8H2D3+U(1) AAS
>>291
> n("(?~|abc)", "abc") # ???
> x2("(?~abc|)", "abc", 0, 1) # ???
けんちゃん最初から気付いてるし
294(1): 2022/06/30(木)19:21 ID:EErfRwVa(1) AAS
●Regular Expressionの使用環境
python3
●検索か置換か?
検索
●説明
ErrorもしくはwarnもしくはInfoから始まり(CODE-xxx)で終わる最短の文字列を抜き出したいんですが
(Error|Warn|info):.*?\(\w+-\d+\)のように最短マッチを使っても1番最初のErrorから最後の(CODE-xxx)までが
マッチしてしまいます
●対象データ
Error: hoge
省8
295: 2022/06/30(木)19:55 ID:5rlmwso+(1) AAS
^(?:Error|Warn|Info)(?~^Error|^Warn|^Info)\(CODE-\d++\)
296: 2022/06/30(木)20:03 ID:VljocFtJ(1) AAS
>>294
msg_type_re = r"(?:(?:Warn|Info|Error):)"
print(re.findall(rf"{msg_type_re}(?:(?!{msg_type_re}).)*?\(CODE-\d+\)", s, flags=re.S))
297: 2022/06/30(木)20:43 ID:WhOCvrbe(1) AAS
^(?:Error|Warn|Info):.*(?:\n\ \ .*)*?\(CODE-\d+\)
外部リンク:regex101.com
298(23): 2022/07/01(金)08:10 ID:FKzEqydA(1/16) AAS
秋葉原店
専門店
住所
〒101-0021 東京都千代田区外神田4丁目3-3
↑の文字列を、置換で、
「秋葉原店,東京都千代田区外神田4丁目3-3」
と成形したいです。
思うに、
検索に、「店~~~~~~東京都」
置換に、「,」
省2
299: 298 2022/07/01(金)08:20 ID:FKzEqydA(2/16) AAS
ようは、
「店」と「東京都」の間にあれば、改行を含み、どんな文字列が何個はいろうが、「,」に変えたいのです。
よろしくお願いします。
300(1): 2022/07/01(金)08:32 ID:fIXdHuhM(1) AAS
テンプレガン無視するな
ここはお前の為の便利屋じゃねぇよ
301(2): 298様専用の便利屋 2022/07/01(金)08:56 ID:6Nj9t6DP(1/2) AAS
環境を言わない質問にはオーソドックスな正規表現で答えれば良いと思う
検索
(店)[\s\S]*(東京都)
置換
$1,$2
302: 298 2022/07/01(金)17:16 ID:FKzEqydA(3/16) AAS
>>300-301
すみません。 環境はwzエディター10 64bitです。
で、
(店)[\s\S]*(東京都)
これではダメでした。
303(1): 2022/07/01(金)17:18 ID:wWlIpSvA(1) AAS
意地でもテンプレは使わない
304(1): 2022/07/01(金)17:27 ID:iqig0nNh(1/2) AAS
スルーされにくいテンプレだから
スルーされてもいいんでしょう
305: 298 2022/07/01(金)17:28 ID:FKzEqydA(4/16) AAS
>>301
教えてくれてありがとうございます。
で、
wzの置換のタブを見ると、「\を文字として検索」と書いてあってそこにチェックが入っていて、そのチェックは外せません。
306(1): 298 2022/07/01(金)17:33 ID:FKzEqydA(5/16) AAS
>>303-304
すみません。 テンプレで質問すると、↓になります。
●Regular Expressionの使用環境
wzエディター10 64bit
●検索か置換か?
置換
●対象データ
秋葉原店
専門店
住所
省3
307: 2022/07/01(金)17:34 ID:C/EjaQqR(1/2) AAS
別のエディタなりsed使え
308(1): 2022/07/01(金)17:48 ID:iqig0nNh(2/2) AAS
>>306
Notepad++、Meryでは以下でいけた
(.+店)[\s\S]*〒\d{3}-\d{0,4}\s(.+)$
$1,$2
309: 298 2022/07/01(金)17:51 ID:FKzEqydA(6/16) AAS
>>308
ありがとうございます。しかしダメでした。
310: 298 2022/07/01(金)17:53 ID:FKzEqydA(7/16) AAS
しかし、
(.+店)[\s\S]*
ここまで削ると食いついてきます。
311: 2022/07/01(金)17:58 ID:Dqsnfi22(1) AAS
複数行な時点で環境限られるよね
312: 298 2022/07/01(金)17:59 ID:FKzEqydA(8/16) AAS
ちなみに、Notepad++、Meryどちらも無料ですが、インストールするとするとどちらがよいでしょうか?
313: 298 2022/07/01(金)18:08 ID:FKzEqydA(9/16) AAS
ちなみに、Notepad++、Meryどちらも無料ですが、インストールするとすると正規表現的にはどちらがよいでしょうか?
314(4): 2022/07/01(金)18:09 ID:C/EjaQqR(2/2) AAS
(?<=店)[^〒]*?〒\d{3}-\d{4}\s++
,
キャプチャする必要無くね?
対象データの例が悪い
他に何件もあって〒が無い場合があったりすると誤マッチするはず
315: 298 2022/07/01(金)18:15 ID:FKzEqydA(10/16) AAS
>>314
ありがとうございます。しかし、 (?<=店) これにすら食いつきません。
316: 298 2022/07/01(金)18:58 ID:FKzEqydA(11/16) AAS
Notepad++をインストールしました。
で、やりたいことは、
外部リンク[php]:www.donki.com
ここから、べーっとマウスでコピペして、
Notepad++に貼り付けて、店舗名,住所のcsvファイルを作りたいのです。
317: 298 2022/07/01(金)19:04 ID:FKzEqydA(12/16) AAS
(?<=店)[^〒]*?〒\d{3}-\d{4}\s++
これでほぼ出来そうです。 ありがとうございます。
318: 298 2022/07/01(金)19:10 ID:FKzEqydA(13/16) AAS
(?<=店)[^〒]*?〒\d{3}-\d{4}\s++
$1,$2
ちなみに、これって$1,$2という変数を使ってますよね?
(?<=店)[^〒]*?〒\d{3}-\d{4}\s++
この文のドコで代入してるのでしょうか?
319: 2022/07/01(金)19:16 ID:TWCq9rfx(1) AAS
テンプレをヤイヤイいうだけの奴わろたわw
320(1): 2022/07/01(金)19:27 ID:omlO1tMt(1) AAS
ページからならjsでやったら?って感じの話しだな
外部リンク:pastebin.com
321: 2022/07/01(金)19:30 ID:23LeTIBQ(1) AAS
xy問題
322(1): 元 298様専用の便利屋 2022/07/01(金)19:51 ID:6Nj9t6DP(2/2) AAS
住所からアニメイトの同志だと思いご協力させて頂きましたがアニメイトではなくドンキだと分かったので
すみませんがこれ以上ついて行くことは出来ません・・ 短い間でしたがありがとうございました、さよなら
323: 298 2022/07/01(金)21:06 ID:FKzEqydA(14/16) AAS
>>322
どうもです。 了解しました。
.+だと文字が何個あってもいいよ、です。
こういうので、
文字でも記号でも改行でも何個あってもいいよ、はないでしょうか?
あるとすれば、
店「」+住所
を、
,
に置換すればいいだけの話なんだけど。
324: 2022/07/01(金)22:01 ID:TkUsKSE8(1/2) AAS
.(ピリオド)は改行コードを除く任意の1文字にマッチする
つまり.*や.+だと改行のところでストップするということ
325: 2022/07/01(金)22:28 ID:oUsXu5GC(1/3) AAS
ピリオドはmオプションつけると改行にもマッチするやで
mオプションがついてるかは環境と指定したオプションによるやで
326: 2022/07/01(金)22:36 ID:TkUsKSE8(2/2) AAS
mオプションじゃなくてsオプションなのでは?
327: 2022/07/01(金)22:50 ID:oUsXu5GC(2/3) AAS
調べてきた
mオプションはRuby、oniguruma系、Meryはこれのはず
sオプションなのはPerl系
Notepad++/SciTEは専用オプションがある
らしい、やってみて確かめたほうがいいね
328: 298 2022/07/01(金)23:07 ID:FKzEqydA(15/16) AAS
ありがとうございます。では、
店.+東京都
に、mオプションを付けるとするとどう書けばいいのですか?
↓にはそれ系の記載がありません。
外部リンク[html]:murashun.jp
外部リンク:userweb.mnet.ne.jp
329(1): 2022/07/01(金)23:25 ID:oUsXu5GC(3/3) AAS
Notepad++のことならGUIのダイアログの左下の右に「.は改行と一致」てのがあるじゃろ
330: 298 2022/07/01(金)23:40 ID:FKzEqydA(16/16) AAS
>>329
ありがとうございます。Notepad++で、「.は改行と一致」にチェックをいれて、
店.+東京都
,
で、次を検索でポチると、
最初の東京都ではなく、最後の東京都、つまりほぼ全文を選択してしまいます。
331: 2022/07/02(土)00:04 ID:BdV6t7uW(1) AAS
正規表現の基本は強欲
なるべく長い文字列にマッチしようとする
332: 2022/07/02(土)09:05 ID:mrmEg2+h(1/2) AAS
> 基本は強欲
20年このスレにいて初めて知りました
333: 2022/07/02(土)09:58 ID:At3W7bIA(1/2) AAS
20年正規表現使ってて強欲すぎて困ったことないの?
※ 用語として強欲はあまりいい意味には使わないから個人的には貧欲の方がいいなぁ
334(1): 2022/07/02(土)10:08 ID:N6Y3zR8M(1) AAS
ひんよく? 貧
どんよく 貪欲
335: 2022/07/02(土)10:24 ID:ophljRqK(1) AAS
そんなとっくに概出のこと言われても困ります
336(1): 2022/07/02(土)12:38 ID:mrmEg2+h(2/2) AAS
貧欲の動作は考えてみればすごく非効率な気がしますね
10万文字の文章に対して「.*」を使ったら10万文字の末尾まで食ってから戻ってきますからね
337: 2022/07/02(土)13:18 ID:At3W7bIA(2/2) AAS
>>334
すまん、素で間違ってたわ... orz
338: 2022/07/02(土)15:23 ID:+K04BJMF(1/4) AAS
*+ 強欲 ++ 最大一致させたらバックトラックしない
* 欲張り + 最大一致させた後、残りの式が不一致になったらバックトラックする
*? 無欲 +? 欲張りと逆。最小一致後にバックトラック
バックトラック
条件を満たす範囲で探索
・欲張りは1文字放棄
・無欲は1文字追加
して試行する
339: 298 2022/07/02(土)18:24 ID:rrBNdWeF(1/5) AAS
てか、↓の文法的解説をできる方はこのスレにはいないのでしょうか?
(?<=店)[^〒]*?〒\d{3}-\d{4}\s++
340(2): 2022/07/02(土)18:51 ID:+K04BJMF(2/4) AAS
(?<=店) 戻り読み。式(店)と次の文字の「間」の位置に一致。abcに対し(?<=ab)ならbとcの間に一致する。アンカー(^$)と同様
[^〒]*? 「〒」以外の文字に最小一致(無欲)
〒 「〒」の文字
\d{3}-\d{4} 「数字3つ」「-」「数字4つ」
\s++ 「\s」に最大一致(強欲)
341: 298 2022/07/02(土)18:58 ID:rrBNdWeF(2/5) AAS
>>340
ありがとうございます。
$1に(?<=店)を代入しているのはなんとなく理解できるのですが、住所の$2にはどの部分で代入しているのでしょうか?
342(1): 2022/07/02(土)19:30 ID:UTWJe5+B(1/2) AAS
[^〒]*?〒は最小量指定子使わないで、[^〒]*〒でよいのでは?
この*は0回以上の「〒以外」の文字にマッチだから、貪欲であっても貪欲でなくても、結局一番初めに出てくる「〒」手前までしかマッチできない。
343: 2022/07/02(土)19:38 ID:UTWJe5+B(2/2) AAS
>>336
貪欲のほうがコストが常にかかるかというとそうじゃない。
場合によっては非貪欲のほうが大量にバックトラックが発生して計算コストかかることもある。
344(1): 298 2022/07/02(土)19:41 ID:rrBNdWeF(3/5) AAS
AA省
345: 298 2022/07/02(土)19:42 ID:rrBNdWeF(4/5) AAS
つまり、2は文法的に間違ってる、ってことですかね?
346(1): 298 2022/07/02(土)19:45 ID:rrBNdWeF(5/5) AAS
てか、Notepad++はカシコイから、
置換文字列→ $1,$2
を、
置換文字列→ ,
と、置き換えて処理してるんですかね?
347: 2022/07/02(土)19:46 ID:+K04BJMF(3/4) AAS
面白いから見守るわw
348(1): 2022/07/02(土)19:57 ID:+K04BJMF(4/4) AAS
>>342
一致しない場合に無駄にバックトラックさせることになるだけなので
[^〒]*+〒
と強欲で良いんじゃね
349: 2022/07/02(土)21:11 ID:FJKEiIOc(1) AAS
>>348
確かにマッチしない場合にバックトラックの発生を抑えるために強欲にするのはありだと思う。
ただ、PCREとかだと[^〒]*〒の場合、Auto Processが動作して勝手に強欲化するから書かなくてもいいはず。
今回のEditorはしらんけど。
350(1): 2022/07/03(日)11:46 ID:DiSdIFQe(1/3) AAS
初心者のうちは強欲は使わないほうがいい気がする
そもそも鈍器のページから店名と住所を取り出すだけの正規表現を書く場合にキャプチャしない書き方や
バックトラックを抑制する書き方をする必要はない
「策士策に溺れる」になってるから質問者に何を教えるべきなのかもう一度考えるべし
351(1): 2022/07/03(日)12:00 ID:J9cIk4yD(1/2) AAS
貪欲禁止って*や+を使うなってことけ?
352(1): 2022/07/03(日)12:44 ID:HH+h1Cia(1) AAS
possessiveのことだろ
353: 2022/07/03(日)13:50 ID:J9cIk4yD(2/2) AAS
手足をもぎ取られた気分や…
354(1): 2022/07/03(日)14:32 ID:nkFK6+7O(1/8) AAS
>>350
初心者が強欲使わないでいつ強欲の動作を知るの?
それとも初心者はみんな量指定子を持つ環境を使うべきって主張かな?
355: 2022/07/03(日)15:36 ID:ZjFQgG61(1/2) AAS
> 使わないほうがいい気がする
「気がする」でついつい無駄コード書いちゃう強迫性不安障害の人かな?
> 「策士策に溺れる」になってるから質問者に何を教えるべきなのかもう一度考えるべし
底辺コーダーが良く使う言い訳
(俺に分かりやすい) 平易なやり方しか認めない!(`・ω・´)キリッ
356(3): 2022/07/03(日)17:56 ID:DiSdIFQe(2/3) AAS
正規表現を考えるときには複雑な情報を単純化する作業が必要になるんだがそういう意味では質問者のほうが才能がある
「店」と「東京都」という2つのキーワードさえ見つけられれば目的を果たせることを見抜いていた
それに対して回答者たちは単純だった依頼を複雑化させたあげく質問者を困らせ続けた
戻り読みを正規表現の先頭に置いてキャプチャを回避することが本当に処理量の軽減になっているのかも疑問
鈍器のページからテキストエディタで店名と住所を取り出すだけの作業に正規表現の高速化を考えるのはもはやコント
君らには問題を単純化する能力が足りないからその点を改善せよ
357: 2022/07/03(日)18:00 ID:ZjFQgG61(2/2) AAS
>>356
>>340
店の直後から郵便番号まで、と十分に単純だと思うが君はこれが複雑なものに見えるのかな?
358: 2022/07/03(日)18:09 ID:hqJYlR9w(1) AAS
>>356
取り敢えず君は書く文章を改善しよう
殆ど愚痴だよねそれ
359(1): 2022/07/03(日)18:20 ID:K4HcDkkQ(1) AAS
どうしようもないケースを除いて「東京都」なんてのをハードコーディングするのは筋が悪いと言わざるを得ない
360: 2022/07/03(日)18:23 ID:BZUl5BA7(1/11) AAS
それはともかく、キャプチャグループが無いのに気づいてないのを指摘してあげろよ
$1,$2に対応するものがないので両方ともヌルになってる
361(1): 2022/07/03(日)18:34 ID:BC52HWP8(1) AAS
>>344
>>346
不思議だとかカシコイだとか面白すぎるんですけどw
それ書いてる>>314には$1なんてどこにも書いて無いのにw
362: 2022/07/03(日)19:05 ID:ur8aI9T4(1) AAS
>>356
>>351,354についての答えが欲しい
363: 2022/07/03(日)19:53 ID:RqS+SurZ(1/2) AAS
文章からして発達障害とかそのボーダーでしょ
鉄道マニアとか特撮マニアに多いタイプのガイジ
364: 2022/07/03(日)19:57 ID:THTbKALg(1/2) AAS
>>359
あなたPG気質もわかるけど、
その位置が空欄となる可能性がないのであれば
どのみち47都道府県をORで並べるハードコーディングになるよw
365(2): 2022/07/03(日)19:58 ID:BZUl5BA7(2/11) AAS
351は論外だろ
強欲を貪欲に変えてるし
366: 2022/07/03(日)20:14 ID:Qz5VC9/y(1) AAS
>>365
正規表現のコンテキストにおいて、強欲と貪欲にどんな違いがあるか教えて
367: 2022/07/03(日)20:15 ID:nkFK6+7O(2/8) AAS
>>365
正規表現に関してはどっちも同じ
なぜなら元の英語greed(greedy)の直訳だから
辞書引けばわかるとおり、greedは強欲であり貪欲でもある
上下前次1-新書関写板覧索設栞歴
あと 635 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.037s