[過去ログ] Regular Expression(正規表現) Part16 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
246: 2022/04/24(日)15:27 ID:HHIBSCEK(1) AAS
>>242
」¥n「 → 」¥n¥n「
とか
(.)¥n「 → $1¥n¥n「
とか
247: 2022/04/24(日)15:30 ID:ioskjRP6(1) AAS
> 検索と書いてあるのに、整形したいですってどういう事?
秀丸から察しろよw
池沼でしょ
」\n「
」\n\n「
248(1): 2022/05/01(日)14:50 ID:GoET9IZ/(1) AAS
CSVファイルのセパレータ以外にマッチさせる正規表現が分かればご教示ください
ダブルクォートの中のカンマはセパレータではないという条件が難しく難儀しています
249: 2022/05/01(日)15:35 ID:Rd1MW222(1) AAS
>>248
csv 正規表現 でググれ
250: 2022/05/02(月)15:41 ID:3wkltjCW(1) AAS
>>2のテンプレで環境や対象データ、希望結果のサンプルを書いてよ
251: 2022/05/03(火)04:52 ID:UnZpzFGu(1) AAS
"あ,い
う'え""お"
これでも、1列しかない。
最初・最後のダブルクォーテーションで、1つの列内・要素を表す
その要素内では、カンマ・改行・シングルクォーテーション・ダブルクォーテーションも使える。
ただし、ダブルクォーテーションは2つ連続させて、1つのダブルクォーテーションと解釈される
だから、このダブルクォーテーションの規則が難しい。
例えば、ダブルクォーテーションに番号を振ると、1-23-45-6
連続したダブルクォーテーションを排除して、1-6 の形で、1つの要素を表す。
つまり、最後のダブルクォーテーションは偶数番目になる
省1
252: 2022/05/03(火)12:12 ID:aiGUnYt7(1) AAS
("[^"]*")+|[^,"\r\n]+|(?<=,)|^(?=,)
外部リンク:regex101.com
253: 2022/05/03(火)14:14 ID:t3Dpq+T6(1) AAS
(?=,|$)
254: 2022/05/13(金)22:38 ID:8kGCIaIA(1) AAS
●Regular Expressionの使用環境
サクラエディタ
●検索か置換か?
置き換え
●説明
タブ区切りcsvファイルの列の順番を入れ替えたい
●対象データ
1\t2\t3\t・・・\t30
※実際は各フィールドは数字だけではなく、長さも一定ではありません。
フィールド数は30で固定です。
省6
255: 2022/05/14(土)01:45 ID:rmaMAnUs(1) AAS
$30を別の場所に持ってくると右隣りとくっついてしまうな
256(1): 2022/05/14(土)05:36 ID:NJOQ17Ts(1) AAS
テンプレ使っているようでテンプレ無視して実例挙げず
タブ区切りのはずが何故かカンマ+タブの区切りになっているがその説明も無し
257: 2022/05/14(土)08:03 ID:qR2dE/b7(1) AAS
本当に タブ+カンマ にしたいとしても俺なら
^(.*?)\t(.*?)\t・・・(.*)$
$3\t,$8\t,$1\t・・・
って書くかな
258: 2022/05/14(土)09:56 ID:/Fl6kBO1(1/2) AAS
俺が作るなら [^\t]* を使って誤爆の可能性を潰しておく
列が31以上ある異常データのときに置換しなくする
259: 2022/05/14(土)10:21 ID:bJIgpLv6(1) AAS
処理対象ファイルが数十個あるとかなら別だけど、表計算ソフトや対応エディタでサクっと入れ替えた方が早そう
260: 2022/05/14(土)11:56 ID:/Fl6kBO1(2/2) AAS
そういやそうだね、csvなんだしw
>>256
テンプレ自体が糞質問製造機になってるからテンプレいらね
俺は今回の質問に不備はないと思っている
261: 2022/05/16(月)18:46 ID:nBhW9usr(1) AAS
探している正規表現の学習サイトがあります。
ネットスラング、小説などの蘊蓄を題材にした問題が置いてあるサイトです。
AAが問題の解説を行なっていた記憶があります
UIはシンプルながら、メタ文字から始まり、後方参照などの発展的な部分、総括したチャレンジ問題など結構ボリュームがある問題集でした。
久しぶりに見にいきたかったのですが、どうにも見つからず、
どなたかご存知でしたら教えていただけると幸いです。
よろしくお願いします。
262: 2022/05/24(火)04:21 ID:SL15aOsO(1/3) AAS
質問させてください。
荒らし対策に「読点2回」を指定するNG表現を作ってみたのですが、一応機能しました
(.*\、.*\n*){2}
上記はもっと簡略化できるでしょうか?
263(1): 2022/05/24(火)04:27 ID:7Wh7VSQ0(1) AAS
、.*?、
264(1): 2022/05/24(火)04:43 ID:SL15aOsO(2/3) AAS
>>263
即答ありがとうございます
(10文字以上、){2}
のように「10文字以上、」が2回以上あったらNGというプログラムも教えてくれますか?
265: 2022/05/24(火)05:20 ID:SL15aOsO(3/3) AAS
すみません、ありがとうございました。
266: 2022/05/25(水)21:16 ID:rVRUpzpa(1) AAS
自分が書いた正規表現を半年後くらいに見たら
何の処理なのか思い出せない。
正規表現って便利だが、そう言う点が唯一のデメリットだよな。
267: 2022/05/25(水)21:33 ID:JiQQrvQ9(1) AAS
>>264
(10文字以上、){2,}
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は文法的に間違ってる、ってことですかね?
上下前次1-新書関写板覧索設栞歴
あと 657 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.031s