Regular Expression(正規表現) Part17

2024/08/22(木) 11:53:01.69ID:Z0c4Ov9t
NG Addr 正規(含まない)
^(age|sage|)$
2024/08/22(木) 12:27:50.31ID:1pp2sZBh
>>124 をせんとエンジンがよわよわなだけで
正規表現は >>121 であってるし低脳ばっかやな
2024/08/22(木) 16:58:52.48ID:WSGH1Pr6
datで下の3つ以外でmatchするってことだろ(書き込みエラーで<>に置き換えてる)
名前(変動)<>sage<>2024/08/22(ry
名前(変動)<>age<>2024/08/22(ry
名前(変動)<><>2024/08/22(ry
専ブラによってエンジンが違うから環境いれる気にはならんが
2024/08/27(火) 22:04:04.81ID:K31idf52
age sage の前後に半角空白が1つまたは2つ入ることを想定すべき
Janeの全盛期ならこんなのすぐに解決してたな
2024/08/28(水) 09:58:05.19ID:M0ceOk+r
想定すべき、って言えるのなんなんだろう?
そこまで想定してなくても実用上十分、てことは多々あるだろう
2024/08/28(水) 11:44:10.78ID:29oRaxIo
スレのdatは板ごとに微妙な違いがある
半角空白が前後に入るスレは珍しくなかった
今の人が知らないのは仕方ない
2024/08/28(水) 12:04:38.47ID:TruuGgPL
>>135
それこそ想定しないても通常大丈夫なものじゃん
俺のLog漁っても20年以上前からあるけど、まだ日付けの年号が2桁でIDも付いてないものでも
前後に空白は付いてなかったくらいだ
俺はレス本体と一時期のスレタイトルぐらいしか記憶にないよ
2024/08/28(水) 12:06:40.94ID:TruuGgPL
スレタイトルは空白じゃなくてタブだったので訂正しとく
2024/08/28(水) 15:51:55.48ID:29oRaxIo
半角空白が入る板が存在しないなら対応する必要は無いよ

ただ、自分なら対応したものを作る
そういう板が1つでもあったら作り直しになるから

質問者さんが使っている板が半角空白が入る板ではないという確証が無い以上
対応しておくのが無難でしょう、したらばやJane板のような外部板のことまで考えるとね
2024/08/28(水) 15:59:03.58ID:TruuGgPL
実用上十分ってことを知らんのか
さらに、他BBSでも空白が入るところは大手ではないよ
(したらば、おーぷん、JANE総合も入らない)
2024/08/28(水) 19:41:57.47ID:29oRaxIo
大手じゃないところで半角空白が入る板があったら誤作動する正規表現を作るよりも
対応したものを作るほうがベターだと思うが

頑なに非対応にする理由もあるまい
2024/08/29(木) 00:19:30.02ID:3od28NMQ
メール欄がわざと「 age 」の奴をNGできない
2024/08/29(木) 19:22:18.21ID:s7DstX6Q
>>133 は対応するべき、て言い切ってる
自分ならこうするとか、この方がベターとかとは一線を画す表現
やらなきゃいけないと言っている

でもさ、不特定多数に配るアプリの話じゃないんだよ?
2024/08/29(木) 19:26:50.79ID:s7DstX6Q
RFC準拠のメールアドレスの正規表現はクソ長いが個人で使うのにそこまで要らん
の話思い出した
2024/08/29(木) 19:38:28.39ID:zKbcOD8k
自分が使うものなら好きにすれば良いが質問の回答として正規表現を作るなら
柔軟性を確保するにこしたことはない
でないと質問者は自分じゃ直せないからちょっとした誤作動でまた質問しに来てしまう
そういう意味で「すべき」と書いたよ、何か問題ある?

> メール欄がわざと「 age 」の奴をNGできない

わざとでない「 sage」がNGになってしまうのはいいの?
2024/08/29(木) 21:34:59.96ID:s4c4C/Bz
試しに、名前とメール欄に前後半角空白付きで書き込んでみた
結果、datからは前後の半角空白は削除されて付いてない

そもそも、可能性があるってだけで対応しないといけないってのはおかしいだろ
たった一つだけでいいのでそういう例がある(あった)というものを出すべき
2024/08/29(木) 21:37:57.27ID:s4c4C/Bz
書いたところは
https://egg.5ch.net/test/read.cgi/software/1724332370/204-206
それぞれJaneStyleで末尾整形あり、整形なし、汎用ブラウザ(firefox)で書いた
2024/08/29(木) 23:45:06.51ID:zKbcOD8k
それは掲示板だって半角空白に対応させてるってことでしょ
正規表現で半角空白に対応しておくべきと書くことはそんなにおかしなことなの

質問者はまだ未解決のようだけどその原因が半角空白でないと言い切れる?
最初から対応しておけばこの可能性を考えずに済むよね?
なんで想定すべきと書いたらいけないの?

ここにいる人全員が納得出来る説明を求む
2024/08/29(木) 23:55:45.32ID:s4c4C/Bz
回答は的確に簡潔に質問に答えることがいちばん
余計な蛇足を加えて悦にいるのは自分が使う分にはいいけど人に指図するものじゃない
ソースコードやスクリプトでも質問もしてないのにあれこれ余分な配慮でコードを複雑にして
いいことをやったと自己満足してる奴にはならないようにしよう
2024/08/29(木) 23:59:39.42ID:s4c4C/Bz
で、半角空白が含まれるものはあるんかい
この部分は一つだけ実例を示すだけでいいんだよ
存在しえない可能性とやらを配慮するのはまったくの無駄
それは半角空白の変わりにタブコードが含まれる場合に対処しろって言うのと変わらん
2024/08/30(金) 00:10:46.53ID:z5xrh4P7
>>135で板によっては存在するのは珍しくないとまでいってるんだから
そのリンクを示すだけでいいんだぞ
2024/08/30(金) 01:14:28.93ID:8cMr2Sm2
141がありもしない難癖ではないことを示すために
メール欄がわざと「 age 」「 sage」の例
https://egg.5ch.net/test/read.cgi/software/1724332370/209-210

空白が入る板とメール欄がわざとでない「 sage」は見たことないな
2024/08/30(金) 08:58:26.65ID:qASTkovi
そんなにいつまでも続けるネタじゃないだろ
2024/08/30(金) 13:24:57.13ID:dkGEn5CF
どんぐりの醜い争い
2024/08/30(金) 17:56:05.65ID:kCrr7PoM
^(s?age|)$でどっちもNGできるわ
>>130でもう出てる
2024/08/31(土) 12:23:47.01ID:ESY986wz
見たことない == 存在しない

さすがに草
2024/08/31(土) 16:07:56.33ID:xB9BteZK
こういう専門スレでよくある現象
質問者がいなくなったのに殴り合い始める
2024/08/31(土) 19:41:26.67ID:ESY986wz
人のちょっとした不手際に噛みつき大騒ぎ
都合が悪いことを言われたらもっともらしいことを言ってごまかす

どこかの知事のマネかねぇ
2024/09/01(日) 12:11:46.90ID:ruX2CvUf
>>147に対する>>148の回答が面白い

>回答は的確に簡潔に質問に答えることがいちばん

と最初に書いておきながら聞かれたこととはまったく違う回答をしてる
2024/09/01(日) 12:54:37.81ID:mvzZbYC4
まだやってるのか
よほど悔しかったと見える
2024/09/02(月) 05:55:02.84ID:zV+ToF23
>>123から半角空白を疑うのは自然な反応だと思うが
20年前のログがあるおっさんがキレる理由が分からんね

論破されて話題のすり替えをして逃げる卑屈な人間でいるより素直に謝ったほうがマシじゃね
てか論破されてることに気付いてなさそう
2024/09/02(月) 15:51:56.49ID:AlH3f6um
いつ変わってもおかしくないような仕様をなぜそんなに信頼できるのか
…ということを抜きにしても、「実用上十分」かどうかを勝手に決めつけるのは…
というか、>>127 で終わりじゃだめだったのか?
2024/09/02(月) 21:11:06.60ID:uqoOZz2h
真・スレッドストッパー。。。( ̄ー ̄)ニヤリッ
163
垢版 |
2024/09/02(月) 21:44:55.24ID:Y7//7QQC
偽・スレッドストッパー。。。( ̄ー ̄)ニヤリッ
164デフォルトの名無しさん
垢版 |
2024/09/03(火) 00:47:33.48ID:dSkXog9i
内輪もめは巣に帰ってやれや屑共
2024/09/03(火) 11:11:23.38ID:JwjQ1m/O
次から「>>127に帰れ」でok
向こうにも正規表現作れる人いるみたいだし

知事そっくりのおっさんはしばらく謹慎しとけ
2024/09/03(火) 11:14:09.37ID:d9bMT2aR
内容的に割と単純かつどうでもいいネタに限って長引く傾向にあるな
2024/09/03(火) 13:28:50.53ID:FknR0mX7
>>126で終わってるんだよ
補足説明込みでも>>130までで以降は無価値
2024/09/04(水) 07:40:52.55ID:EbiVCIQx
>>121>>131が空気になっててかわいそうなんだが
誰か構ってやれよ
169デフォルトの名無しさん
垢版 |
2024/09/10(火) 05:40:09.20ID:+qdzMQ7n
質問なのだが、htmlファイルで
<DOCTYPE からつづいて途中にあるAAAをごっそり空欄で置換したいのだが
どうやったらええん
^<DOCTYPE*AAAじゃうまくいかんかったのよねー
2024/09/10(火) 06:04:34.38ID:kowefQA5
<DOCTYPEEEEEEEEEAAA「ぐわぁ!!
2024/09/10(火) 14:57:41.04ID:W69Tu2B8
DOCTYPE*は、DOCTYPの後にEが0回以上繰りかえしているものを表すけど本当にそうなってるとは思えん
DOCTYPEEEEEEAAA
2024/09/11(水) 03:14:10.70ID:qNF+YH3h
昔の仕様をごそっと<!doctype html>に統一したいなら
^<!doctype.*>で置き換えすりゃいいんじゃね、見当違いならごめん
2024/09/11(水) 07:51:29.11ID:9V6SWpAY
.*>

人に教えていいレベルじゃねぇ
2024/09/11(水) 08:07:51.41ID:qNF+YH3h
すぐに気づくだろ初心者スレってわけじゃなし
2024/09/11(水) 08:42:50.99ID:HzXBBqr9
すみません、全部消えました
2024/09/11(水) 08:45:08.47ID:9UoQOhuf
>>174
無能
2024/09/11(水) 08:51:56.08ID:4F/AxKNI
またはじまった
こいつほんとにクソやな
2024/09/11(水) 09:13:11.67ID:qNF+YH3h
そもそもスクリプトなのかエディタなのか
具体的な例も使用方法も書かずに答えが出るわけねえよ
2024/09/11(水) 13:19:20.05ID:9V6SWpAY
回答は的確に簡潔に質問に答えることがいちばん

>>169
^<DOCTYPE.*?AAA
2024/09/11(水) 14:41:32.83ID:e/oUHwOW
通常先頭に書くDOCTYPEは
<!DOCTYPE html ~>ってなると思うんだが、!は何処に行った?
さらにAAAとか出てくるか?
AAAがdoctypeと無関係ならその間に改行も挟まってるかもしれんよ
2024/09/11(水) 15:58:20.52ID:9V6SWpAY
<DOCTYPE
.*?

人に教えていいレベルじゃねぇ
2024/09/11(水) 16:32:04.44ID:NXAVPXLE
>>181
なんじゃそりゃww
2024/09/11(水) 18:51:15.50ID:DnMjWL2Z
シングルラインモードでフォルダ内jsonを正規表現でgrep検索できるフリーのテキストエディタ教えて
windowsで動いてGUIしっかりしてる使いやすいのがいい
2024/09/12(木) 00:04:43.72ID:uYEhMGBt
外部コマンド取り込めてパスからジャンプできるエディタならなんでもいいんでは
vim/neovimとかvscodeとか
2024/09/12(木) 09:42:50.94ID:71tHR6b6
シングルラインモードと言うと複数行に渡ってマッチさせたいと?
拙者がつこうてるエディタは一行単位でしかマッチ出来なかったでござる
186デフォルトの名無しさん
垢版 |
2024/09/12(木) 10:05:19.60ID:fOf5lfVo
ワイルドカードと性器表現
どうしてこうなったマン心環境の違い
2024/09/12(木) 11:27:45.34ID:G9h42jpn
>>183
grepとエディタは別々でいいだろ
GUIのgrepソフトは外部エディタを呼べるようになってる(呼べないものって多分無い)
テキストエディタはそれこそ何でも良い
俺はDevasってgrepソフト使ってるがこれも過去に適当に探したものなのでもっといいものがあるかもしれない
2024/09/12(木) 11:34:30.88ID:G9h42jpn
いや、json限定ならjsonエディタとか使えばいいんじゃなかろうか
2024/09/12(木) 14:21:47.53ID:iwy8LWRU
>>183
非ascii文字はユニコードエスケープされてる?
2024/09/12(木) 14:33:20.53ID:G9h42jpn
JSONだから基本UTF-8なんじゃないのか?
2024/09/12(木) 14:35:15.82ID:G9h42jpn
パーセントエスケープか
あるのとないのと両方あるしなあ
2024/09/12(木) 14:54:08.26ID:71tHR6b6
北製のエディタ選んでぶっこ抜かれてるやつはいないな?
出所の怪しいやつは避けるんだぞ?
2024/09/12(木) 16:03:08.30ID:3oNIjHZT
>>184
>>187
ありがとう使ってみる
対象ファイルはUTF8で改行はLFとCF+LF混合(1ファイル内では統一)
日本語2バイト文字はエスケープなしに普通に表記されてる
2024/09/12(木) 16:55:26.60ID:tplSlOtQ
>>187,193
dnGrepも良い

マッチ箇所の前後数行表示やマッチファイル全体プレビュー表示でサクッと探して
diffとtext editor用の外部コマンドラインを複数登録して使ってる
(有名どころのテンプレートあり)
2024/09/12(木) 17:00:09.50ID:G9h42jpn
>>193
テキストエディタは何でも良いとは言ったけど
起動引数にファイル名と行位置を指定できるものじゃないと使い物にならない
メモ帳はダメだが大抵大丈夫
2024/09/12(木) 17:38:37.00ID:G9h42jpn
>>194
良さそうだなと思ったらwin7には無理っぽい(.NET8だとか)
2024/09/13(金) 06:32:33.01ID:11vS+uA+
>>196
文字エンコーディング自動判別が出来るので、ちょっと古めのcp932とUTF8の混在環境で重宝すると思ったがそれは残念

>>183,193は大丈夫そうだけど(根拠なし)
2024/09/23(月) 23:23:59.22ID:kDMCxsRj
pcre2の作者さんが後継者探してる
27年続けてきて最近年を感じるようになったとか
2024/09/26(木) 08:21:09.95ID:JQMFr7dw
老朽ソフトウェアの後継者問題って
需要があれば勝手にメンテされるし無ければ消えるだけだよ
正規表現は時代に合ってないからこの概念ごと消えるかもしれない
2024/09/26(木) 20:55:23.73ID:DovoaZNg
>>199
正規表現が時代に合ってないってどういうこと?
2024/09/26(木) 22:02:49.37ID:KgNEnM1+
たぶんだけど自然言語で書く、かな
いまでもコンパイルはしてるし
曖昧な表現だとランタイムエラーになるのはおなじ
2024/09/26(木) 22:22:27.94ID:ingxpjLa
AIと喋ってろ
2024/09/29(日) 08:05:17.90ID:rL2U3h48
自然言語を聞いたAIが作るのが正規表現というオチ
既存の正規表現エンジン用の正規表現ではなくAIが生成した正規表現を動かすためだけの
正規表現エンジンも生成される
既存の正規表現エンジンと比べてデータサイズが小さく不要な機能が無いため高速に動作

64コアCPUでテキストデータの64ヶ所を同時に検索
正規表現がテキストにマッチしない場合の速さが2024年時点の通常検索の速さを超えてしまう

野良猫理論: ある限られた空間であちこちをうろつく複数の野良猫が置き餌を見つけるのに
かかる時間は頭数の二乗に反比例するような気がする理論
2024/10/01(火) 11:39:53.35ID:Z3sXryIq
>>203
>野良猫理論:
なるほど、そうかも
2024/10/01(火) 11:45:14.33ID:v9xyba12
>>203
妄想はAIとすれば捗るぞ
2024/10/06(日) 00:20:41.41ID:YLpbtiCB
DFA 「NFA、僕は君のことをクリーネ閉方したい」
NFA 「受理できません」
2024/10/08(火) 20:25:00.73ID:2vPrSKyO
久しぶりにプログラム板にきました
あるwebサイトのたとえばx0000からx99999までのurl内それぞれ個別にあるたとえば日付等の項目を
すべてカンマ区切りで抜き出す正規表現を考えようとしましたが
結局、項目が10個まであるわけじゃないので
<!DOCTYPE.*ほにゃらら項目、ほにゃらら項目…ほにゃらら項目、ほにゃらら*</html>
てのを10まであるわけじゃない項目分それぞれ抜き出しました
本来なら、 項目,項目,項目…… で抜き出せるように一発で正規表現使えば何とかなるのでしょうけれど、
項目だけの列といいましょうかx0000の項目Aからx9999の項目Aをまずだして
次にx0000の項目Bからx9999の項目Bを次に出してと
結局その項目が10までとはいかないけれどその分をだして表計算ソフトにつっこんだわけです
結果できましたがどうにも納得がいきません

正規表現が出来ればきっとっとも楽に時間もかからずできたのでしょう

JaneXeno質問スレ9
https://egg.5ch.net/test/read.cgi/software/1722559511/
いまこのスレにいたりもします。
2024/10/08(火) 22:03:57.17ID:XPh9YV+I
>>207
1. まず日本語を整理する能力を身につけましょう
2. 次にテストケースを整理する能力を身につけましょう
3. そして1.と2.で身につけた能力を使ってChatGPTに問い合わせましょう

さすれば望む答えが楽に得られます
2024/10/09(水) 01:44:24.09ID:WkCTujRI
ここは野良猫理論を数学的に証明するスレになりました
2024/10/09(水) 02:26:53.03ID:LpRCWPua
すごく読み難いし目的も読み取れない
終わってる
2024/10/09(水) 03:04:13.75ID:w53uZCE9
頑張って2回読んだけど何のアドバイスもできそうにない
212デフォルトの名無しさん
垢版 |
2024/10/09(水) 05:04:10.76ID:z5soGBkc
Excel VBA 質問スレ Part81
とやらにいる障害者みたいだね
2024/10/09(水) 09:59:45.33ID:nVMNMgni
DOCTYPE全然関係なかったんやな
>>180がアタリ
>>179,181はハズレ
2024/10/09(水) 12:56:32.38ID:WkCTujRI
とりあえずxenoをあぼーん登録しといた
2024/10/10(木) 13:27:21.21ID:WHQFPCFe
そういえばこのスレが伸びたのも発端は>>120だったな
>>120みたいな難問を気軽に質問されたら困る
2024/10/12(土) 15:23:11.12ID:gMUOKJHq
●Regular Expressionの使用環境
VS Code 1.94.2 の検索バー

●検索か置換か?
置換

●説明
htmlファイルを開いている。
href属性が .css で終わらない場合に属性値を空文字列へ置換したい。
href="[^"]+(?!\.css)"を検索したが .css で終わっていてもマッチしてしまう。

●対象データ
<a href="URL.css">link</a>
<a href="a.html">link</a>
<link rel="stylesheet" href="a.css">
<link rel="stylesheet" href="b">

●希望する結果
<a href="URL.css">link</a>
<a href="">link</a>
<link rel="stylesheet" href="a.css">
<link rel="stylesheet" href="">
217>>216
垢版 |
2024/10/12(土) 15:33:12.91ID:gMUOKJHq
原理はよくわかりませんが自己解決しました
href="[^"]+(?<!\.css)"
2024/10/12(土) 16:13:01.24ID:qxhXc26A
href="[^"]+(?!\.css)"

<a href="URL.css">link</a>で"[^"]+の最後の文字はs
つまりsの位置では.cssではないのでマッチする
2024/10/12(土) 16:15:48.04ID:qxhXc26A
sの後ろ(つまり")の位置に訂正
2024/10/12(土) 17:58:39.21ID:hwVWGPYm
正規表現関係ないけどhtmlタグ周りの操作は
できるだけDOM経由でやっておいたほうが楽で安全だと思う

htmlの書き方がみんな揃ってるとは限らないし
<div>href="foo"</div>とかlocation.href=“bar”にはマッチしないようにするとか
いろいろ考慮ポイントが増えてミスするリスクも高くなる

DOM経由でやっておけばその辺は安心
document.querySelectorAll("[href]:not([href$='.css'])").forEach(x=>x.setAttribute("href", ""))
2024/10/13(日) 15:34:10.31ID:josLIOo8
>>217
それ大正解だよ、すごい
それ以上のものを作れと言われたら大抵の人は悩む
というか>>217の答えに辿り着けない人が多数かと
2024/11/02(土) 23:35:42.52ID:5ILrPZJU
正規表現のオペレータの分類についての質問です
assertionにアンカーやバウンダリを含める分類はあまり見かけませんが何故でしょう?(例dotnet文書)

以下(多分regex界で著名な)参考サイトより引用
Assertions. The traditional regular expression metacharacters ^ and $ can be viewed as assertions about the text around them: ^ asserts that the previous character is a newline (or the beginning of the string), while $ asserts that the next character is a newline (or the end of the string). Perl added more assertions, like the word boundary \b, which asserts that the previous character is alphanumeric but the next is not, or vice versa.
https://swtch.com/%7Ersc/regexp/regexp1.html

確かにマッチに含まれないという意味ではよくassertionであると言われるlookback/aheadと同様です
何か含めないことで利点があるのでしょうか?
2024/11/09(土) 12:53:50.15ID:k7Zpjetb
これに答えられる人はここに数人いるかどうかなのでは
(私はもちろん答えられません)

勘で答えるなら先読み、後読みは後から出てきたものなので元からあった
^ $ \b とは別物扱いになった、とかですかね?すみません、分かりません
2024/11/09(土) 21:56:49.21ID:f+X68XQj
(ゼロ幅)アサーションには含まれる、(ルックアラウンド)アサーションには含まれない

でもルックアラウンドアサーションだけを指して単にアサーションと呼ぶなんてことがあるかな、大体何か修飾語がついてるよね?
単にアサーションと呼ばれるのはゼロ幅アサーションの方だと思う
実際参考サイトもそんな感じだろう知らんけど
225デフォルトの名無しさん
垢版 |
2024/11/19(火) 12:37:58.18ID:UdPT9kjC
Google spreadsheetでREGEXREPLACE関数で置換するやり方を教えていただけないでしょうか
実行したい内容は以下の通りです。

●Regular Expressionの使用環境
Google spreadsheet

●検索か置換か?
置換

●説明
英文の各単語の先頭1文字以外をアスタリスクに置換したい
カンマとピリオドとハテナは置換しない
アポストロフィは置換する

●対象データ
Oh, it’s sunny today.
Do you understand?

●希望する結果
O*, i*** s**** t****.
D* y** u*********?
2024/11/19(火) 13:15:50.46ID:qWVXBGcO
俺の知識の範囲では正規表現だけでは不可能
2024/11/19(火) 13:28:40.67ID:TpNNC8ku
その環境がわからんので一般的な場合として
/(?<=[^ ,.?\n\r])[^ ,.?\n\r]/*/g
/(?<=[a-z’'])[a-z’']/*/ig
2024/11/19(火) 13:45:50.24ID:qWVXBGcO
なるほど。後読を使えばいいのか
229デフォルトの名無しさん
垢版 |
2024/11/19(火) 14:33:47.46ID:UdPT9kjC
後読はこの関数では使えないようなのですが、関数ではなくて置換機能なら使えるようなので試してみます!
ありがとうございました!!
2024/11/19(火) 15:02:42.11ID:TpNNC8ku
The problem is the ’XXX’.
こういうのはあるのかな?
2024/11/19(火) 15:19:15.00ID:TpNNC8ku
>>228
正規表現のどの文法を使うかじゃなくて、どういう論理にするかを思いつくかどうかだから
(とんちクイズと一緒で発想力の問題)
なお230のようなケースがあるのならおそらく再起を使う必要がでてくると思う
232デフォルトの名無しさん
垢版 |
2024/11/19(火) 15:56:13.16ID:UdPT9kjC
>>230
これは想定していなかったですが今回はなさそうです
2024/11/19(火) 17:34:15.15ID:G+8Uvgpo
Apps Script使うのがシンプルなこともある
2024/11/19(火) 23:06:51.29ID:TpNNC8ku
/(?<=[a-z]|[a-z]')[a-z]|(?<=[a-z])'(?=[a-z])/*/ig
(アポストロフィは半角のみにしてる)
This is the 'Tom's Home'.
→ T*** i* t** 'T**** H***'.

無理ーー
'Rock'n'Roll' is "Rock 'n' Roll". → 'R**********' i* "R*** 'n' R***".
'' is NULL strings. → '' is NULL strings.
2024/11/20(水) 17:07:45.94ID:vf/ffllo
regexpは数学(キリっ
2024/11/20(水) 17:38:18.40ID:ibyj9elY
ウザっ
237デフォルトの名無しさん
垢版 |
2024/12/12(木) 23:55:43.32ID:9bmybcd/
暫く使わないとすぐ忘れてしまう
低スキルだから使う頻度が少なくて記憶が定着しない
2024/12/13(金) 00:12:32.38ID:EgfV0Bor
わかる
特に(?!これ系一切覚えてない)
2024/12/13(金) 13:01:50.92ID:hybzdr+3
=^^= こんな演算子をどこかの記事で見た記憶はあるけど意味は忘れた
2024/12/13(金) 13:19:30.73ID:Zywldz4i
  ∧,,∧
  (=^v^) にょほほー
  /  l
 (OuuO
241デフォルトの名無しさん
垢版 |
2024/12/19(木) 16:02:37.82ID:1szj+7uv
●Regular Expressionの使用環境
テキストエディタのMeryや、テキストエディタのgPadの置換

●検索か置換か?
検索

●説明
英文中のスペース以外の、他のスペースを削除したいです。

●対象データ
平和 戦争
AA XVA ZZ
昭和 平成 令和
NIHON BUNKA
経済 学部
Ishiba Naikaku
●希望する結果
平和戦争
AA XVA ZZ
昭和平成令和
NIHON BUNKA
経済学部
Ishiba Naikaku

※いま現在はネットを探してやっと見つけた
(?<![a-zA-Z])\s|\s(?![a-zA-Z])
を使ってます。これは連続スペースやTabにも対応してるのが良い点と思います。
ただ、全角スペースは削除出来ませんし、改行まで削除されて1行テキスト文に
なるという短所があり、また手動で改行しなくてはならず非常に手間です。
全角スペースはまだ良いとして改行削除がされないように改善できませんでしょうか?
よろしくお願いします。
2024/12/19(木) 16:06:40.57ID:wZwgXxbf
なかなかの丸投げだな
¥sを[ \t ]
243デフォルトの名無しさん
垢版 |
2024/12/19(木) 17:08:28.91ID:1szj+7uv
>>242
希望通りになりました。即レス大感謝ありがとうです。
いちおう自分なりに半年間ほど色んなパターンに変えてやってみてたんですが、大変助かりました。
2024/12/20(金) 20:07:37.02ID:7538eGNC
すげー半年がかりの疑問を瞬殺か
やっぱ詳しい人に聞いておくものだな
2024/12/21(土) 01:36:35.41ID:lQ0nYrFo
半年同じ問題に取り組める根気は素晴らしいが初心者は効率が悪いね
Googleとかは20分だか30分だか手が止まったら質問しろって企業文化らしい
2024/12/22(日) 15:36:39.77ID:8OMG/th9
メモ
Meryで\sを全角スペースにマッチさせるには(?u)\sかFindOnig=1
2024/12/23(月) 12:51:43.05ID:hOdCdrxj
半年あったら正規表現覚えたほうが早いな、Meryクリスマス
2024/12/23(月) 12:59:50.83ID:hOdCdrxj
I have a pen. I have an apple.
2024/12/31(火) 20:44:10.06ID:Thw2Z7nN
(?<=This year)(?=Next year)
2025/01/04(土) 18:21:54.49ID:YsNNcli5
<title> を
\<title\> って書かないとエラーになるケースってあるの?
2025/01/04(土) 19:03:21.90ID:0KLOcGyc
GnuRegexとGrepでは\<と\>は特別な意味を持つ、それぞれ単語の先頭、単語の末尾にマッチする
だから<title>にマッチさせたいのではなくtitleにマッチさせたいのかも

\<と\>で囲えばbigtitleやtitleholderにはマッチしなくなる
2025/01/04(土) 20:47:05.52ID:a+K50MRq
Gnuって書いたらヌーになるがな
2025/01/04(土) 21:43:10.75ID:12P97q6K
メタ文字 \b が使えない環境ってことなんだろうか?
2025/01/04(土) 21:56:58.81ID:0KLOcGyc
うぐぅ

>>253 高須クリニック
2025/01/04(土) 22:07:44.40ID:0KLOcGyc
すまん、二刀流だった
https://www.gnu.org/software/grep/manual/html_node/Special-Backslash-Expressions.html
2025/04/05(土) 13:05:55.46ID:/X2GFnPw
GeminiにChatでやりたいこと入力したらずばりの正規表現回答してくれんのすごすぎて草
そんで最強のGrep検索・置換ツールのVScodeにその正規表現をコピペするだけの簡単なお仕事
マジで更新もされず陳腐化したクソ使い難い正規表現アプリやサービスがすべて駆逐されんの納得でクソワロタ
257デフォルトの名無しさん
垢版 |
2025/04/05(土) 14:35:59.22ID:dD+UMa0w
VSCodeやのにCopilotつかわんのなんでなんw
置換はperl -i -peが手軽にコードも介在できて未だに最強
2025/04/05(土) 17:01:54.69ID:yzm+sG/V
文章でミジンコだとわかるだろほっといてやれ
2025/04/07(月) 00:01:48.06ID:HqNk85Dr
一方、ロシアは秀丸エディタを使った
2025/04/07(月) 18:30:32.29ID:+glSnyRi
米国がEmEditorを使うところから物語は始まるのか
2025/05/07(水) 13:34:42.62ID:VK/GbxYn
後方参照を初めて使ってみた
なるほど便利
後方を参照するのかと思っていたが後方で参照すると言う意味だった
2025/05/08(木) 20:10:04.49ID:a95yfZhU
ぎょぎょぎょ?参照うお
2025/05/08(木) 20:37:02.88ID:NyjQsc8w
ぎょえーー
264デフォルトの名無しさん
垢版 |
2025/06/10(火) 10:10:19.59ID:JUI3rKzN
置換……指定した文字を置換します。
@AA@A@.TXTの"@"を"Q"に置換(場所の指定無し)
QAAQAQ.TXT - すべて置換される

@AA@A@.TXTの"@"を"Q"に置換(場所を指定)

前から1文字目 : QAA@A@.TXT - 前から1文字目のみ置換
前から4文字目 : @AAQA@.TXT - 前から4文字目のみ置換
後から1文字目 : @AA@AQ.TXT - 後から1文字目のみ置換

削除……指定した場所にある文字を削除します。
ABBAA.TXT、ACCAA.TXTの前から2文字目から右に2文字を削除
ABBAAB.TXT → AAAB.TXT
ACCAAC.TXT → AAAC.TXT
2025/07/13(日) 21:04:57.49ID:Dpndt2SK
iOSです
このスレで訊いて良いのかわかりませんが
Instagramの画像はその投稿のURL、例えばこれ↓

https://www.instagram.com/p/DL6O8f3zfb-/

の末尾に「media/?size=l&.jpg」を加えると投稿の一枚目の画像URLになります


https://www.instagram.com/p/DL6O8f3zfb-/media/?size=l&.jpg

しかし、2枚目以降の画像URLがわかりません
「media/?size=l&.jpg」をいじって2枚目以降の画像URLが作れませんでしょうか
ご教授お願いします
2025/07/13(日) 21:12:41.07ID:SOWPf8Mn
正規表現関係ねーw
2025/07/13(日) 21:19:50.98ID:Dpndt2SK
どこで訊いたら良いのかわからず、パソコン詳しい人が多そうなここで質問させて頂きました
2025/07/14(月) 01:14:36.64ID:KR/EmCR1
和んだ
2025/07/14(月) 02:28:52.50ID:yh4CMksV
PC詳しい人が多そうなスレでそういう質問を受け付けていると
馬鹿が多そうなスレに成り下がると気が付かないものかね
2025/07/25(金) 05:51:04.25ID:3r8TzWYu
>>264
sed の出番か?
271デフォルトの名無しさん
垢版 |
2025/08/09(土) 13:09:26.08ID:AY2Xi2Yg
SNSやWeb検索もたいてい正規表現対応してるからプログラミング以外で活用できる場面が増えてなんか嬉しい
2025/08/14(木) 17:46:16.07ID:ll+c+ksk
そんなに対応してるのある?
2025/09/29(月) 18:28:57.47ID:omFFHDum
^[^:]+://+([^:/]+\.)?

これの//+部分って//だけで問題ありますか?
2025/09/29(月) 19:15:27.09ID:QGaGSVZY
>>273
その正規表現の目的は理解できてるの?
2025/09/29(月) 21:45:19.64ID:SNsW5d6C
>>273
スラッシュをエスケープしなきゃいけない環境で使う正規表現かどうかによる
エスケープしなきゃいけない環境なら問題があるしそうじゃない環境なら問題ない
2025/09/29(月) 22:25:44.67ID:RjmgsX7I
file://で次が/になる場合はある

https://en.wikipedia.org/wiki/File_URI_scheme
2025/09/29(月) 22:54:22.13ID:FkLCZ8/e
何にマッチさせたいかによるわな
278デフォルトの名無しさん
垢版 |
2025/10/25(土) 12:46:17.09ID:BjPJz/dc
【悲報】4/24に鬼車がgithubで開発終了したのに続いて
鬼雲(bregonig.dll)の公式サイトが9/30で閉鎖
http://k-takata.o.oo7.jp/
https://x.com/k_takata/status/1970461557374230654
2025/10/28(火) 01:47:57.16ID:WdB2Psfo
鬼車はJavaScriptの仕様に寄せろと細かいことまで言われて
嫌気がさしたのかなという印象だけど真相は作者のみぞ知るか

ただ最近はDFAキャッシュを使うエンジンの台頭で
これとかboost.regexが速いとされた時代はとうに終わってるんで
マルチバイト対応を必要とする人以外はあまり影響ない気もする
280デフォルトの名無しさん
垢版 |
2025/11/02(日) 19:07:30.81ID:vGsY1NrW
「正規表現技術入門」を読むと、GNU grep ではマッチング途中で必要になった部分だけ
オンデマンドで DFA を構成していく On-the-Fly 構成法を使っている、と書かれてるけど
どのレベルから On-the-Fly してるんでしょ ?

部分集合構成法で NFA を DFA に変換する所からなのか、もっと前のε-遷移除去からなのか
あるいはさらに前の正規表現をパースして NFA を作る所も On-the-Fly なんですかね ?

GNU grep のソース見ろと言われそうだけど
2025/11/02(日) 20:01:30.27ID:JoUIYtII
正規表現の枠を超える後方参照(\1)とかで使ってそう
あれが絡むと事前にDFA作れない
2025/11/02(日) 20:13:48.87ID:JoUIYtII
正則言語の枠か
用語がちょっと怪しい
2025/11/03(月) 19:15:39.49ID:6hs01YZr
>>280
自己レス。AI に聞いたら

| GNU grepでは、DFA の生成に On-the-Fly(実行時逐次的)な手法を採用していますが、
| それは基本的に部分集合構成法を逐次的に行うことを意味します。
| ε遷移の除去も、このプロセスの中で実質的に On-the-Fly で行われます。

とのことでした。やっぱε-除去も On-the-Fly なのか、ムズいなー

>>281
GNU grep の On-the-Fly 法は、到達しない状態ノードを作らないようにすることで
省メモリ化と高速化が目的なので、DFA の構造自体が動的に変わるものではないと思ってました。

で、言われるように後方参照は正規言語のクラスを超えてるので、DFA 型エンジンでは
普通は実現出来ないのだけど、「正規表現技術入門」では

| GNU grep は基本的に DFA 型ですが、部分的(後方参照への対応のためなど)に一部
| VM 型のアプローチもとっています。

とかさらっと書いてあるだけで、具体的な記述はないんすよね (やっぱ入門書だな)。

でも言われてみれば、On-the-Fly 的に動的に DFA を構成して行けば、それで後方参照も
実現出来そうな気がしてきた。バックトラックとか面倒そうだけど一考の価値はあるかも

GNU grep もそうやって実装してる ? かどうかは分からないけど
2025/11/05(水) 01:01:25.63ID:hq1L/1I1
それわかったらなんか良いことあるの(クルクルパー
2025/11/07(金) 00:31:17.29ID:Ua2fzQVD
NFA使わずに正規表現から直接DFAを構成する方法がDragon Bookに書いてあるけど
この書籍は今もDragon Bookで通じるのかな
もう古文書扱いされてそう
2025/11/07(金) 17:38:51.77ID:2v77MqUc
>>285
情報ありがとうございます
やはりドラゴンブックは読まざるを得ない感じですかね
読んでみます (気は重いけどw)
2025/11/07(金) 18:36:08.56ID:Ua2fzQVD
Dragon Bookでpdf検索すると大学のサイトとかで英語版が引っ掛かるけど旧版はセーフなのかな
DFAの構成法は第2版だと3.9節
少なくとも3章は最初から読んだ方がいいと思う
コンパイラに興味ないなら全部読む必要はない
2025/11/07(金) 19:00:36.04ID:Ua2fzQVD
そういえば正規表現自体の解析で4章前半のTop-Down Parsingくらいまでは役に立つかも
2025/11/07(金) 20:27:12.90ID:2v77MqUc
>>287
ありがとうございます。旧版 (日本語訳) はT、U共にさっき中古をポチりました
届くのは来週末だけど、図書館に第二版があるようなので明日行ってきます
コンパイラに興味ない、とまでは言わないけど、果たしてそこまで手を広げられるものなのか心許ないす
2025/11/11(火) 08:03:53.83ID:TgiPYl91
こういう方に最新版をポンと出す制度にならんもんかな
2025/11/11(火) 14:34:01.30ID:XyI6oP+4
複数の正規表現を使い分けられる記法があるといい
2025/11/20(木) 00:34:25.20ID:mbRrNt6G
DragonBook (第2版) の第3章まで読んだら、>>280 に書いた ε-遷移についての最初の疑問も氷解してしまったので、
一応伏線回収しておきます

「正規表現技術入門」では、ε-遷移を除去した後で部分集合構成法を行う、という流れで記述されていたので、
部分集合構成法を行うには前もって ε-遷移を除去しなければならない、と思い込んでいたのだけど、
その必要は全くなかったのでした

部分集合構成法の処理の中で一つ部分集合が得られたら、その集合の ε-閉包を取って
(その集合に そこから ε-遷移する状態を全て加えて)、それを DFA の 1 状態とすればよいだけなのでした

>>283 に書いた AI の回答が何となく歯切れが悪かった理由もこれで納得出来たわけで、
何でこんな簡単なことを思い付かなかったのか、我ながらアホでしたね

「正規表現技術入門」は章ごとに執筆者が違っていて、VM 型エンジンの章は鬼雲の作者が直々に書いていて説得力があるのですが、
DFA 型エンジンの章、とくにこの ε-遷移あたりの記述は今一つな感じです (エラそうに言ってますが)

--
ところで DragonBook 3.9 節の「正規表現から直接 DFA を導くやり方」も読みました
シンプソン構成法を経由せず、構文木から DFA を導くのはスゲーと思ったのですが
followpos() の張るダイアグラムは一種の NFA 的なものなので、それを DFA に変換する時には
やはり部分集合構成法と同じ手法を使うわけですね
とは言え ε-遷移が存在しないので扱う状態数もずっと少なくて済むはずなので、
これを使って On-the-Fly 法を実装して行きたいと思ってます

何にせよ、DragonBook を読めと言ってくれた >>285 さんには感謝しかないです
ありがとうございました
2025/11/20(木) 01:53:23.80ID:MRBYucy1
●Regular Expressionの使用環境
 Java1.5
●検索か置換か?
 検索
●説明
 http://https://があるもしくはない場合のドメインとサブドメインを検索したい
 自分で考えた以下の正規表現だと、.から始まる不正なURLまで一致してしまいダメでした
^(https?://)?(.*\.)?doubleclick.net
●対象データ
#一致させたいものは以下
http://doubleclick.net/pagead/
https://doubleclick.net/pagead/
http://g.doubleclick.net/pagead/
https://g.doubleclick.net/pagead/
http://googleads.g.doubleclick.net/pagead/
https://googleads.g.doubleclick.net/pagead/
doubleclick.net/pagead/
g.doubleclick.net/pagead/
googleads.g.doubleclick.net/pagead/

#一致させたくないものは以下
http://.doubleclick.net/pagead/
https://.doubleclick.net/pagead/
http://.g.doubleclick.net/pagead/
https://.g.doubleclick.net/pagead/
http://.a.g.doubleclick.net/pagead/
https://.a.g.doubleclick.net/pagead/
.doubleclick.net/pagead/
.g.doubleclick.net/pagead/
0doubleclick.net/pagead/
http://0doubleclick.net/pagead/
https://0doubleclick.net/pagead/
2025/11/20(木) 09:40:15.39ID:Mz3QCXK6
その処理系で文字クラスが使えるなら (.*\.)? を ([^.0].*\.)? とすればイケるハズ
295293
垢版 |
2025/11/20(木) 15:17:38.43ID:MRBYucy1
>>294
レスありがとうございます
以下の2行は一致しなくなりましたが、
.doubleclick.net/pagead/
.g.doubleclick.net/pagead/

以下の6行は一致してしまいました
http://.doubleclick.net/pagead/
https://.doubleclick.net/pagead/
http://.g.doubleclick.net/pagead/
https://.g.doubleclick.net/pagead/
http://.a.g.doubleclick.net/pagead/
https://.a.g.doubleclick.net/pagead/
2025/11/20(木) 16:30:51.92ID:0pUMlwmF
"doubleclick.net"は決め打ちでいいのかな

Pattern p = Pattern.compile("^(?:https?://)?((?:[^./?#]+\\.)*doubleclick\\.net)(?=[:/]|$)");

マッチした後の処理は分からんけど動作例
https://ideone.com/3WFyH6
297293
垢版 |
2025/11/20(木) 21:15:50.67ID:MRBYucy1
>>296
レスありがとうございます
せっかく教えていただいたのにすみません、JavaではなくてJavaScriptでしたので動作しませんでした

チェッカー
https://www-creators.com/tool/regex-checker
2025/11/20(木) 21:32:25.61ID:0pUMlwmF
今時分にJava1.5でおかしいと思ったけどスルーしてしまった
文字列でエスケープしてる\\を\に直せば使えるはず
ついでに?と#を先読みに追加した(多分いらない)

^(?:https?://)?((?:[^./?#]+\.)*doubleclick\.net)(?=[:/?#]|$)
299293
垢版 |
2025/11/20(木) 21:52:35.87ID:MRBYucy1
>>298
度々ありがとうございます
完璧に動作しました!
助かりました

未だに先読みと後読みが使いこなせず・・・詰んでました
2025/11/20(木) 23:34:16.70ID:mbRrNt6G
>>292
シンプソン構成法じゃなくてトンプソン構成法でした。すまそん
尊敬する Ken Thompson の名前を間違えるとはヤバ過ぎ
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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