[過去ログ] Regular Expression(正規表現) Part16 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
46: 29 2021/11/20(土)14:09 ID:dCkHZW0G(2/2) AAS
>>45 そうなんだよね、だから気になってた

-------------------------------------------------
>>42 とは別の検証をしてみた

p /(?~a.*b.*c|222)/.match("000a111b222c333")
#<MatchData "000a111b22">

これは期待通りにマッチした、これが正しく動くということは
論文の読み落としではないね、失礼しました

問題は同一posでマッチ文字数が最短になるマッチを見つけなければいけないが
それをしていないことみたいだ
この処理って結構な処理量になりそうだけど大丈夫なのかな?
省5
47
(1): 29 2021/11/25(木)18:40 ID:QsU6pq8j(1/2) AAS
Onigmo のバグの原因となった個所が判明したので書いておこう

正規表現における非包含オペレータの提案
外部リンク[pdf]:staff.aist.go.jp

この論文のサンプルコードに下記のメソッドがある

def try_alt(r1, r2, str, pos, &block)
try(r1, str, pos, &block)
try(r2, str, pos, &block)
end

これは正規表現で言うと r1|r2 の "|" にあたる動作をする部分のメソッドだが
このサンプルコードでは r1 のマッチが成功した後でも必ず r2 を試す仕様になっている
省7
48: 29 2021/11/25(木)19:06 ID:QsU6pq8j(2/2) AAS
論文3ページ目の右半分に 表3 がある

r1r2  |  [:seq, r1, r2]

ここの :seq は r1 と r2 を連接するという意味で使われているが
サンプルコードでは :seq を使わず :cat になっている
ここで疑問なのが何故違う名前を使うことになったのか? である

(仮説1) 非包含オペレータ提案者さんは猫が好き

ごろにゃんしながらバックトラックにゃん である
省2
49
(1): 2021/11/29(月)20:58 ID:ZJywLyaD(1/3) AAS
ある短い英単語が文章に含まれているかどうかを判定したいのですが、
他の英単語の一部に含まれているようなときは除外したいです。
例:検索単語:ap、
○:ap is short of...
○:これはapです
NG:pen pineapple apple pen
つまり、『単語の前後に文字がある場合は、それらがアルファベットでない』という条件を加えたいのですが、
これの実現方法に詰まっています。
[^a-zA-Z]ap[^a-zA-Z]
の至るところに、.*や*や+を様々なパターン試したのですがうまく行かず。。。
省2
50: 2021/11/29(月)21:09 ID:be+dUloq(1/2) AAS
>>49
(?<![a-zA-Z])ap(?![a-zA-Z])
もし英文のみなら
\bap\b
でも可
51: 2021/11/29(月)21:22 ID:ZJywLyaD(2/3) AAS
こんなに早く教えていただいてありがとうございます。
試してみたのですが、うまく行きませんでした。検証方法間違ってますでしょうか?
----------------
value="abc ap abc"
pattern = "(?<![a-zA-Z])ap(?![a-zA-Z])"
re.match(pattern, value)
※何も取得できず
----------------
52
(1): 2021/11/29(月)21:35 ID:7mT4ej7+(1) AAS
re.matchじゃなくてre.search
matchは先頭位置からしかマッチするか調べない
53
(1): 2021/11/29(月)21:41 ID:be+dUloq(2/2) AAS
ところで
ap'sとかap-dataとかもろもろの扱いはいいのか?
54: 2021/11/29(月)22:02 ID:ZJywLyaD(3/3) AAS
>>52
ありがとうございます!うまく行きました!
大変初歩的な間違い、失礼いたしました。。。ご助言ありがとうございます

>>53
ご指摘ありがとうございます。そこの考慮をしていませんでした。
今回はたまたま問題ありませんでしたが、これからは考えます。
ありがとうございました。
55: 29 2021/12/06(月)21:53 ID:S5ugmQVz(1) AAS
rubyのコードが読めたから調子に乗って鬼車のソースからのインストールと
simple.c の実行に挑戦してみたら成功するまで10日くらいかかった

win10 パソコンで VMware を動かして中に ubuntu 20.04 を入れて
oniguruma 6.9.7 をインストした
あとは C言語で書かれたサンプルコードを解析すれば oniguruma の
色々なオプションを試せるようになる..

Unix も C言語 も知らないしプログラマでもないミジンコだけどググりまくれば
意外と何とかなりそうだ、次は Onigmo を入れよう..
56
(1): 29 2021/12/07(火)02:27 ID:gbEOg3vj(1/3) AAS
Onigmo もインスト出来たけど simple.c の実行結果がおかしい

// oniguruma の場合
match at 4
0: (4-14)
1: (5-13)

// Onigmo の場合
match at 4
0: (21474836484-55834574862)
1: (0-0)

インスト失敗か?
省3
57: 29 2021/12/07(火)04:28 ID:gbEOg3vj(2/3) AAS
↑の構成確認の件はOnigmo の README.ja の 111 〜 114 行目 が
oniguruma の説明のままなだけだった、takata先生更新を..
.ja が付いてない英語版も同様です

github の Onigmo のトップページでは正しく
"onigmo-config --cflags" と書いてありました
58: 29 2021/12/07(火)15:13 ID:gbEOg3vj(3/3) AAS
↑ の件ですが README.ja の 61 行目の

> 以下、鬼車の README.ja:

を見落としておりました、鬼車の説明書きのコピペだったのね..orz

>>56 の Onigmo の結果がおかしかったのも↓で正常動作しました

間違い: cc sample.c -L/usr/local/lib -lonig
正しい: cc sample.c -L/usr/local/lib -lonigmo
省1
59: 29 2021/12/14(火)23:52 ID:hRBVXs3o(1) AAS
perl5と鬼車、鬼雲の動作を比べて遊んでたらperl5の変な挙動を発見
\d{1} の {1} を付けるか消すかで結果が変わる

---------------------------
my $str = '12';
$str =~ s/(?<name>\d{1}){0}(?&name)/<match=$&>/;
print "$str\r\n";
---------------------------
↓{0} での定義を (?(DEFINE) ... ) に変えると正常動作する
---------------------------
my $str = '12';
省4
60: 29 2021/12/15(水)05:01 ID:+lf8SrwJ(1) AAS
・ {0} での定義ではマッチせず
---------------------------
my $str = '123';
$str =~ s/(?<name>123){0}(?&name)/<match=$&>/;
print "$str\r\n";

・DEFINEを使うと正常動作する
---------------------------
my $str = '123';
$str =~ s/(?(DEFINE)(?<name>123))(?&name)/<match=$&>/;
print "$str\r\n";
省2
61
(1): 29 2021/12/16(木)22:14 ID:0VSoy2O4(1) AAS
onigurumaの非包含オペレータの動作が論文と違う
正規表現 ^(?~abc) をテキスト 0123abcd に対して検索して比較すると..

論文の動作     : 0123ab がマッチする
onigurumaの動作 : 0123  がマッチする

逆に Onigmo は分岐が含まれない正規表現なら論文通りに動作するので
この場合は論文と同じ動作をする

動作的には ((?!abc).)* と同じなので論文で指摘されているように
形式言語理論から逸脱しているし、後ろに続く正規表現によっては
マッチ出来ずに検索が終わってしまうケースが発生する 例、 ^(?~abc)c

非包含オペレータは提案から14年経ってもなお未完のままということに..
62
(1): 2021/12/17(金)13:32 ID:N/8v4GiQ(1) AAS
>>61
^(?~(?<=ab)c)
63
(1): 2021/12/17(金)15:12 ID:wvP9ttxM(1) AAS
記号が同じなだけで名称も説明上の動作も違うからそもそも似て非なる別物
ではなくて?
64: 29 2021/12/17(金)19:59 ID:t+q3CK3B(1) AAS
>>62 それ反則w ちなみにこんなのもある
Perl正規表現雑技 : ある文字列を含まないものにマッチする正規表現
外部リンク[htm]:www.din.or.jp

>>63 その解釈で間違ってないと思う、oniguruma の (?~abc) は仕様が
決まった時点で別物だね、(?:(?!abc).)* の拡張版と言ったほうがしっくりくる
実用上は oniguruma 版のほうが使いやすそうだしあえて変えたんだろうね
65: 2021/12/17(金)20:49 ID:BDVQn7Pa(1) AAS
いやぁ、、ヒネくれちゃっただけでしょ
66: 2021/12/19(日)06:09 ID:X6k+U6Sv(1) AAS
成果だけ横から頂いてこっちで改変流用するわwおまえ除名なwとか言われちゃったらまあ拗ねもするさ
67: 2021/12/19(日)08:57 ID:hMGijQ8S(1) AAS
(?s:^(?=.*(?:トビラ|280|280|[内外]製|純正|公式))(?=.*(?:ガイジ|発狂|長文|必死|キチガイ|キチキチ)))

これが効かないんすけど何か間違えてますか?
2chスレ:android
68: 2021/12/19(日)10:54 ID:mCvaVjB9(1) AAS
少なくともchmateだとマッチしてる
正規表現と文字列の切り替えの設定間違えてるんじゃないの
69
(1): 2021/12/20(月)20:18 ID:k8SAGnLj(1/6) AAS
●Regular Expressionの使用環境
サクラエディタ(bregoing.dll Ver4.20 with Onigmo 6.2.0)

●検索か置換か?
検索

●説明
IPv4アドレスに一致させたい

●対象データ
2021.12.19.06
192.168.1.1

●希望する結果
省3
70: 69 2021/12/20(月)20:22 ID:k8SAGnLj(2/6) AAS
すみません
対象データの訂正です
最初と最後に文字列があります

●対象データ
AB2021.12.19.06E
CD192.168.1.1E
71: 2021/12/20(月)20:25 ID:cLNhpahP(1/2) AAS
外部リンク:www.google.co.jp
72
(9): 2021/12/20(月)20:55 ID:k8SAGnLj(3/6) AAS
度々すみません
訂正があったので再度質問させてください

●Regular Expressionの使用環境
サクラエディタ(bregoing.dll Ver4.20 with Onigmo 6.2.0)

●検索か置換か?
検索

●説明
IPv4アドレスに一致させたい
条件
前後に何も含まない場合
省15
73: 72 2021/12/20(月)21:00 ID:k8SAGnLj(4/6) AAS
希望する結果では[]や半角を含まずIP部分だけ一致させたいです
よろしくお願いします
74
(4): 2021/12/20(月)21:13 ID:cLNhpahP(2/2) AAS
(?<![.0-9])(IPv4の正規表現ggrks)(?![.0-9])
75: 72 2021/12/20(月)21:27 ID:k8SAGnLj(5/6) AAS
>>74
ありがとうございます
それだとIPv4アドレスではない部分に一致してしまいダメ
(?<![.0-9])([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})(?![.0-9])
76: 72 2021/12/20(月)21:31 ID:k8SAGnLj(6/6) AAS
>>74
こういった結果を希望しています
よろしくお願いします

●対象データ
A2021.12.19.06B
B192.168.1.01B
192.168.1.1
[192.168.1.1]
_192.168.1.1_ ←_は半角空白

●希望する結果
省5
77: 2021/12/20(月)21:50 ID:k8/KZn4u(1) AAS
[192.168.1.1_
78: 72 2021/12/20(月)22:36 ID:azxFC8Fx(1) AAS
>>74
下の通りにしたら出来ました
ありがとうございました
/(?<![.0-9])(((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9]))(?![.0-9])/k
79
(3): 2021/12/21(火)05:04 ID:DlXpRfUq(1) AAS
(?<![.\d])(?:(2(?:5[0-5]|[0-4]\d)|1\d\d|[1-9]?\d)\.){3}\g'1'(?![.\d])
80: 72 2021/12/21(火)12:15 ID:bLPLuUHJ(1/5) AAS
>>79
できました
ありがとうございました!
81
(3): 2021/12/21(火)12:48 ID:YqPiCVQe(1) AAS
(?<![.\d])(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.\g'1'){3}(?![.\d])
82: 72 2021/12/21(火)12:54 ID:bLPLuUHJ(2/5) AAS
>>81
できました
ありがとうございます!
みなさん頭いいんですね・・・私は単純な正規表現しか分からず
83: 72 2021/12/21(火)13:04 ID:bLPLuUHJ(3/5) AAS
ちなみに>>79さんや>>81さんの正規表現だと
こういった正規表現チェッカーでは一致しないのは何故なんでしょうか?
外部リンク:www.debuggex.com
JavaScriptと表示されているリストをPythonに指定して試しました
84: 2021/12/21(火)16:35 ID:fKMzp4yd(1) AAS
後方参照の記法絡みかなあ
85: 2021/12/21(火)16:46 ID:ehDQ8UlO(1) AAS
¥をつかうか、$を使うかは、なかなか思い出せないから困る
86
(3): 2021/12/21(火)18:31 ID:2Q9XRXAv(1) AAS
>>79 >>81
サクラエディタ(というか鬼車や鬼雲、bregonig.dllの正規表現)
の\dは全角数字にもマッチするから
[0-9]で検索すべき

全角が含まれてしまう話は\s,\wなども同様

サクラエディタBBSでの高田先生の過去発言
外部リンク[html]:sakura-editor.github.io
87: 72 2021/12/21(火)18:47 ID:bLPLuUHJ(4/5) AAS
>>86
なぜか分かりませんが全角には一致しなかったので大丈夫でした
88: 72 2021/12/21(火)18:54 ID:bLPLuUHJ(5/5) AAS
>>86
よく確認したら全角にも一致していました
すみません
89: 2021/12/21(火)19:19 ID:N0HCE/E4(1) AAS
左端に(?a)をつければ\dのままでも?
90: 2021/12/21(火)19:35 ID:aQSGSn8P(1) AAS
Meryの\dは半角のみ
正規表現まわり含め検索はサクラよりMeryのが良いな
サクラは複数行検索不可だし
91
(11): 2021/12/21(火)20:39 ID:wzddSm6Q(1) AAS
●Regular Expressionの使用環境
サクラエディタ(bregoing.dll Ver4.20 with Onigmo 6.2.0)

●検索か置換か?
検索

●説明
IPv6アドレスに一致させたい
条件

●対象データ
2603:1096:0604:00bc:0000:0000:0000:0009
(2603:1096:0604:00bc:0000:0000:0000:0009) ←半角括弧の中だけに一致させたい
省15
92: 2021/12/21(火)23:04 ID:lAwv+hLw(1) AAS
>>86
鬼車なら、オプション指定(?D)でdigitをASCIIだけにできる
(?D)..¥d..
93: 2021/12/22(水)00:48 ID:zQqayV78(1) AAS
正直\dを[0-9]以外にもマッチさせる仕様ってどういう時に便利なのか今一つ分からん
94
(2): 2021/12/22(水)03:24 ID:dkzRMG/Q(1) AAS
[0-469bc:]++
95
(1): 2021/12/22(水)09:44 ID:dK2CjfaN(1/2) AAS
住所にしろ日付にしろ上から順に書いた方が齟齬が生じないだろうに
西洋文化圏のやつらは何が何でも省略しなきゃ気が済まないんだろうな
こんなもん略記許さない仕様の方が逆に全体的な効率は良いだろうに
フロッピーディスクの時代なら少しでも容量減らしたいのは分からなくも無いけど
96
(2): 91 2021/12/22(水)10:25 ID:giUFecUL(1/6) AAS
>>94
ありがとうございます
IPv6アドレス以外には一致させたくないのです

●対象データ
1
01
2603:1096:0604:00bc:0000:0000:0000:0009
(2603:1096:0604:00bc:0000:0000:0000:0009) ←半角括弧の中だけに一致させたい
_2603:1096:0604:00bc:0000:0000:0000:0009_ ←_は半角スペースの中だけに一致させたい
2603:1096:604:bc::9
省9
97: 2021/12/22(水)11:10 ID:j6Uulo2p(1) AAS
>>95
個人的な本名や住所が先頭に来るのは西洋文化圏というよりイスラム圏も含めた地中海世界
プログラミング言語だと名前空間が上から順で統一されてるのに不思議だよね
98
(1): 2021/12/22(水)11:53 ID:dK2CjfaN(2/2) AAS
>>96
>>74と同じ手法でやればいいじゃない
99
(1): 91 2021/12/22(水)12:01 ID:giUFecUL(2/6) AAS
>>98
ありがとうございます
どういうことでしょうか?例えば>>94さんの例を元にして下の通りにしてもIPv6以外に一致してしまいます
(?<![.0-9])([0-469bc:]++)(?![.0-9])
100: 2021/12/22(水)16:45 ID:rmiXIWtW(1) AAS
IP アドレスの正規表現ぐらい、公式が発表しているのでは?
101
(1): 2021/12/22(水)17:23 ID:Q/8wGtmi(1/3) AAS
>>99
最小がわからんので{8,}は適当だが、例文の限りではこれでいける。
ちょいと調べたら16進数とのことなので0-9,a-fなんでないの?
[0-9a-f:]{8,}
102: 2021/12/22(水)17:29 ID:SKIY34Ty(1) AAS
IPv6を正確に捕捉するのは難しいだろ
2001:db8:0:0:1::1は×で、2001:db8::1:0:0:1が正しい
::ffff:c000:0280 = ::ffff:192.0.2.128
2001:db8:a::123/64
fe80::3%1
103
(1): 91 2021/12/22(水)17:33 ID:giUFecUL(3/6) AAS
>>101
ありがとうございます
それだと16:54:09みたいな日付にも一致してしまいました
104
(1): 2021/12/22(水)17:41 ID:Q/8wGtmi(2/3) AAS
>>103
そのパターン限定なら{8,}を{15,}とかで回避できる
105
(1): 91 2021/12/22(水)17:52 ID:giUFecUL(4/6) AAS
>>104
ありがとうございます
{9,}にしたら出来ました!

ちなみにこういうものに一致しないようにする方法はありますか?
:2603:1096:604:bc::9 ←先頭に:がある
こういう出現はないはずなんですが、もし簡単な正規表現の追加で出来たら嬉しいなあと
106: 91 2021/12/22(水)17:58 ID:giUFecUL(5/6) AAS
>>105
出来た・・・と思ったんですが、文字数の調整で対応できない数字や英字の連続に一致してしまいダメでした
107
(1): 2021/12/22(水)18:06 ID:Q/8wGtmi(3/3) AAS
これでどう?
ただし頭:への対応は無理
([0-9a-f:]+:){4,}[0-9a-f]+
108
(4): 91 2021/12/22(水)18:17 ID:giUFecUL(6/6) AAS
>>107
度々ありがとうございます
それでも数字や英字の連続に一致してしまいダメでした
08d9c24701be

合ってるか分からないのですが、今のところ>>91の正規表現の末尾に[0-9]*を加えています・・・
(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))[0-9]*
109: 2021/12/22(水)18:29 ID:G1M4O4Y+(1) AAS
>>108
ところどころfe80とかffffみたいにベタ書きしてるのはなぜ?
110: 2021/12/22(水)21:01 ID:++/G/dKU(1) AAS
忘年会ネタにどうぞ
外部リンク[txt]:github.com
外部リンク[txt]:github.com
111
(1): 2021/12/23(木)03:07 ID:0XYH//o1(1) AAS
(?<!\h)(IPv6の正規表現ググレカス)(?!\h)
112
(1): 2021/12/23(木)09:13 ID:fgU7IqZ3(1/3) AAS
>>108
>08d9c24701be
([0-9a-f:]+:){4,}[0-9a-f]+
俺の環境ではマッチしないし、しないはずだけど?
113
(2): 2021/12/23(木)09:14 ID:fgU7IqZ3(2/3) AAS
>>108
ちなみにipv6の正規表現で検索して色々出てきたけど、下のやつから頭とお尻の(^$)とるとマッチするんだが、改行が含まれてしまう。
他は>>96がイレギュラーすぎてマッチしないのが多い。

外部リンク[html]:tech-uh-oh.blogspot.com
114
(1): 91 2021/12/23(木)12:05 ID:czwrZ62f(1/4) AAS
>>111
ありがとうございます
IPv6の正規表現も含めて教えてほしいです

>>112
ありがとうございます
すみません、もう一度試したところ08d9c24701beには一致しませんでした
これは対象データと希望する結果に書き忘れていたのですが、
教えてもらった([0-9a-f:]+:){4,}[0-9a-f]+だと2002:a05:622a:15cc::に一致しませんでした
115: 91 2021/12/23(木)12:10 ID:czwrZ62f(2/4) AAS
>>113
度々ありがとうございます
そのURLにある正規表現だと長すぎてサクラエディタに登録できませんでした
116
(1): 2021/12/23(木)12:30 ID:fgU7IqZ3(3/3) AAS
>>114
([0-9a-f:]+:){4,}[0-9a-f:]+にすれば、それもマッチするけど
また要らないがマッチする可能性も出てくる。
117: 91 2021/12/23(木)12:52 ID:czwrZ62f(3/4) AAS
>>116
何度もありがとうございます
1つの正規表現にまとめることにこだわらずに、
>>116で教えてもらったものと>>108の2つで対応したいと思います
どうもありがとうございました

>>108だと以下のようなものが一致せず困っていたので・・・
2001:db8::1:0:0:1
2001:db8::0:1:0:0:1
2001:0db8::1:0:0:1
118
(1): 2021/12/23(木)18:54 ID:vyeaRFwP(1/2) AAS
(?<![\h:])(?:(\h{1,4}:)(?:(:\h{1,4}){1,6}|:)|\g'1'{2}(?:\g'2'{1,5}|:)|\g'1'{3}(?:\g'2'{1,4}|:)|\g'1'{4}(?:\g'2'{1,3}|:)|\g'1'{5}(?:\g'2'{1,2}|:)|\g'1'{6}(?:\g'2'{1}|:)|\g'1'{7}(?:\h{1,4}|:))(?![\h:])
119: 91 2021/12/23(木)18:57 ID:czwrZ62f(4/4) AAS
>>118
わたし宛でしょうか?
それを試したら何にも一致しませんでした・・・
120: 2021/12/23(木)20:41 ID:XObIp/CD(1) AAS
>>113
\sに改行が含まれるからでしょ

Rubyとかなら0x09〜0x0D(水平タブHT,LF改行,垂直タブVT,改頁,CR改行)と0x20(スペース)

サクラエディタの鬼雲なら上記に加えて、
その他の改行種(NEL,PS,LS)や空白種(全角スペースやNBSPなど)
121: 2021/12/23(木)21:45 ID:vyeaRFwP(2/2) AAS
([0-9a-f]{1,4}:)(?:(:[0-9a-f]{1,4}){1,6}|:)|\g'1'{2}(?:\g'2'{1,5}|:)|\g'1'{3}(?:\g'2'{1,4}|:)|\g'1'{4}(?:\g'2'{1,3}|:)|\g'1'{5}(?:\g'2'{1,2}|:)|\g'1'{6}(?:\g'2'{1}|:)|\g'1'{7}(?:[0-9a-f]{1,4}|:)

(?<![0-9a-f:])(?:([0-9a-f]{1,4}:)(?:(:[0-9a-f]{1,4}){1,6}|:)|\g'1'{2}(?:\g'2'{1,5}|:)|\g'1'{3}(?:\g'2'{1,4}|:)|\g'1'{4}(?:\g'2'{1,3}|:)|\g'1'{5}(?:\g'2'{1,2}|:)|\g'1'{6}(?:\g'2'{1}|:)|\g'1'{7}(?:[0-9a-f]{1,4}|:))(?![0-9a-f:])

(?<![0-9a-f])(?:([0-9a-f]{1,4}:)(?:(:[0-9a-f]{1,4}){1,6}|:)|\g'1'{2}(?:\g'2'{1,5}|:)|\g'1'{3}(?:\g'2'{1,4}|:)|\g'1'{4}(?:\g'2'{1,3}|:)|\g'1'{5}(?:\g'2'{1,2}|:)|\g'1'{6}(?:\g'2'{1}|:)|\g'1'{7}(?:[0-9a-f]{1,4}|:))(?![0-9a-f:])
122: 2021/12/24(金)07:37 ID:MVBh4BeN(1) AAS
(([0-9a-f]{1,4}):){7}(?:\g'2'|:)|\g'1'{6}(?:(:\g'2')|:)|\g'1'{5}(?:\g'3'{1,2}|:)|\g'1'{4}(?:\g'3'{1,3}|:)|\g'1'{3}(?:\g'3'{1,4}|:)|\g'1'{2}(?:\g'3'{1,5}|:)|\g'1'(?:\g'3'{1,6}|:)
123
(1): 2021/12/24(金)12:59 ID:OtUQWwNp(1) AAS
短くするの?
(([0-9a-f]{1,4}):){7}(\g'2'|:)|(\g'1'()|(?=\5)(?!\6):()){1,6}\g'2'?(?=\6)
124
(1): 2021/12/24(金)15:17 ID:nz+3yICM(1) AAS
すげえw
()で文字間の位置をキャプチャ出来る事もそれを参照で先読みで使える事も知らなかったわ
125
(3): 2021/12/24(金)16:07 ID:TnoL0oNz(1/2) AAS
>>124
ごめん、先読みにする必要なかった
(([0-9a-f]{1,4}):){7}(\g'2'|:)|(\g'1'()|\5(?!\6):()){1,6}\g'2'?\6
126
(2): 2021/12/24(金)16:09 ID:TnoL0oNz(2/2) AAS
外部リンク:www.perlmonks.org
127: 2021/12/24(金)23:23 ID:zm3lCbTy(1) AAS
>>125
その表現だと↓みたいなポート番号にまで一致しちゃうYO!
2001:db8::1:80
これは表記がそもそも推奨されないからいいっちゃいいけど
128: 2021/12/25(土)12:25 ID:e5f15Ru5(1/5) AAS
世界でもトップレベルの秀才たちが決めた規格なのになんでこんなに扱いづらいんだ?
そういえばメールアドレスの規格も酷かったな〜(>>3の雑技を参照)
129: 2021/12/25(土)12:36 ID:JZM3mrrs(1/2) AAS
むしろ 出来る人 は難しいかどうかが分からないからじゃない?
なんでこの程度の事でこの人たち四苦八苦してるんだろう、ってね
税制などと同じで敢えてややこしく作って仕事作ってるという側面もあるのかもね
130: 2021/12/25(土)12:50 ID:e5f15Ru5(2/5) AAS
頭が良すぎるのも考えものだな、IT土方の気持ちなんて分からないだろうな

頭が良すぎる人の考える正規表現は大抵論理的に正しく動くが
検索効率を上げる書き方には興味が無いらしく強欲を使ったり
今回のIP6の例で言えば先頭に (?=[\h:]{6}) を置いて検索スピードを
上げようというIT土方ならではの実践的手法が使われないことが多い ex. >>125
131: 2021/12/25(土)13:00 ID:Qk7G85M2(1) AAS
老舗旅館の増築みたいなもんでしょ
後方互換性を保とうとしたらそうならざるを得ない
MS-DOSをひきずるWindowsのようなもん
132: 2021/12/25(土)13:21 ID:e5f15Ru5(3/5) AAS
windowsは増築しすぎてグシャっといきそうになってるね
133: 2021/12/25(土)13:46 ID:JZM3mrrs(2/2) AAS
まあ俺も底辺ドカタの気持ちなんてさっぱりだわ悪いけどw
134: 2021/12/25(土)14:30 ID:y5wYV+SA(1/2) AAS

135: 2021/12/25(土)14:38 ID:e5f15Ru5(4/5) AAS
たまにでいいからIT土方のことも考えて下さい
うちの会社で>>125みたいな正規表現を使ったら怒られます
チェック担当の子がヤムチャになっちゃったからやめてねって言われます
136: 2021/12/25(土)20:41 ID:y5wYV+SA(2/2) AAS
無法地帯
137
(2): 2021/12/25(土)22:12 ID:e5f15Ru5(5/5) AAS
kkosさんここ見に来てるかな
外部リンク[ja]:github.com
539行目
×  + 不在停止 (?|...)
〇  + 不在停止 (?~|...)

来年はISO-2022-JPの年、今年も1年お疲れ様
138
(1): 2021/12/26(日)10:52 ID:XNM+0b8X(1) AAS
なんだこれ

鬼雲
外部リンク:ideone.com
139
(1): 2021/12/27(月)00:34 ID:BHlowg/U(1/2) AAS
>>126
これやっと理解出来た、勉強になった、ありがとう

1、他の分岐に移っても捕獲したものは保持される
2、()が捕獲してないと\1は空文字列にマッチ出来ない

がキモになってるんだな
onigurumaの後方参照値有効性確認器でも同じことが出来そうだ

>>138
>>47
. は (?:a|b|c|........) と書き換えられる、すなわち分岐を含む正規表現だ
これだけじゃ説明付かない結果になってるけど . を使ってる以上考えても無駄かと
140: 139 2021/12/27(月)19:30 ID:BHlowg/U(2/2) AAS
あれ、でも他の分岐に行っても保持されるのならどの分岐を抜けてきたかの
判断はどうやってするんだろう?
繰り返しをしてる中ですべての分岐で保持が成功していたら区別が付かない
まぁ正規表現でやらずにコード書けばいいだけだけど
141: 2021/12/28(火)01:38 ID:e4meyx5L(1) AAS
高度IT人材、富士通は最大年収3500万円へ

「富士通年収3500万!」日本のIT企業の年収も、高額化してきました

AI人材の獲得に超本気 NECが新人事制度を9人に適用、富士通は最大年収3500万円へ

【年収3500万円も】富士通、「ジョブ型」人事制度を導入 幹部社員から 高度IT人材

来年度から副業解禁 人材多様化へ―大同生命次期社長
省3
142: 2021/12/28(火)08:15 ID:2qR0ux8Z(1) AAS
富士通は電子カルテがクソ
143: 2021/12/28(火)11:45 ID:6tSOSnH1(1) AAS
捕獲したものを手放してnilに戻すメタ文字があればいいのか?

# \2, \3, \4 の中身をnilにするメモリクリア
\mc{2-4} or \mc{2,3,4}

中身をクリア出来るなら任意の文字列の代入も出来る

# \2, \3, \4の中身を書き換え
\m{2=foo,3=bar,4=hoge}

(?{code})が使えない環境では重宝する機能になる
当然名前付きのものも書き換えられるようにするのが望ましい
144: 2021/12/30(木)00:46 ID:Z0Yaemgr(1/4) AAS
>>126
外部リンク:www.perlmonks.org
これすご、理論屋さんの作った芸術作品て感じ

貪欲の繰り返しがどう動くかを分かってないとこれは書けないし
(*F)の入れ方も無駄がなくて素晴らしい
145
(1): 2021/12/30(木)19:53 ID:Z0Yaemgr(2/4) AAS
IPv6アドレスのテキスト表記
動画リンク[YouTube]

予想以上に自由度が高くてワロタ
>>91にまともな回答が付かないのは必然だったのか
正規表現を作れたとしてもサクラエディタの検索欄にはたぶん入らないね
1-
あと 857 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.032s