[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 02/20 03:08 / Filesize : 262 KB / Number-of Response : 1023
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Regular Expression(正規表現) Part16



1 名前:デフォルトの名無しさん [2021/11/03(水) 19:50:01.71 ID:ebAE+z9+.net]
Regular Expressionスレです。

質問する場合は必ず実装言語や処理系ソフトウェア名を示してください。

前スレ
Regular Expression(正規表現) Part15
https://mevius.5ch.net/test/read.cgi/tech/1568640311/


次スレは>>980宜しく
天ぷら等>>2以降

52 名前:デフォルトの名無しさん mailto:sage [2021/11/29(月) 21:35:41.08 ID:7mT4ej7+.net]
re.matchじゃなくてre.search
matchは先頭位置からしかマッチするか調べない

53 名前:デフォルトの名無しさん mailto:sage [2021/11/29(月) 21:41:33.24 ID:be+dUloq.net]
ところで
ap'sとかap-dataとかもろもろの扱いはいいのか?

54 名前:デフォルトの名無しさん [2021/11/29(月) 22:02:03.30 ID:ZJywLyaD.net]
>>52
ありがとうございます!うまく行きました!
大変初歩的な間違い、失礼いたしました。。。ご助言ありがとうございます

>>53
ご指摘ありがとうございます。そこの考慮をしていませんでした。
今回はたまたま問題ありませんでしたが、これからは考えます。
ありがとうございました。

55 名前:29 mailto:sage [2021/12/06(月) 21:53:22.08 ID:S5ugmQVz.net]
rubyのコードが読めたから調子に乗って鬼車のソースからのインストールと
simple.c の実行に挑戦してみたら成功するまで10日くらいかかった

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

Unix も C言語 も知らないしプログラマでもないミジンコだけどググりまくれば
意外と何とかなりそうだ、次は Onigmo を入れよう..

56 名前:29 mailto:sage [2021/12/07(火) 02:27:56.29 ID:gbEOg3vj.net]
Onigmo もインスト出来たけど simple.c の実行結果がおかしい

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

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

インスト失敗か?

README_japanese に書いてある "onig-config --cflags" での構成確認は
oniguruma と Onigmo で同じコマンドだけど共通のコマンドなのかな?
両方入れたからどっちの構成を確認してるのか分からない

57 名前:29 mailto:sage [2021/12/07(火) 04:28:00.86 ID:gbEOg3vj.net]
↑の構成確認の件はOnigmo の README.ja の 111 〜 114 行目 が
oniguruma の説明のままなだけだった、takata先生更新を..
.ja が付いてない英語版も同様です

github の Onigmo のトップページでは正しく
"onigmo-config --cflags" と書いてありました

58 名前:29 mailto:sage [2021/12/07(火) 15:13:24.06 ID:gbEOg3vj.net]
↑ の件ですが README.ja の 61 行目の

> 以下、鬼車の README.ja:

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

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

間違い: cc sample.c -L/usr/local/lib -lonig
正しい: cc sample.c -L/usr/local/lib -lonigmo

お騒がせして申し訳ありません m(__)m

59 名前:29 mailto:sage [2021/12/14(火) 23:52:24.48 ID:hRBVXs3o.net]
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';
$str =~ s/(?(DEFINE)(?<name>\d{1}))(?&name)/<match=$&>/;
print "$str\r\n";
---------------------------
perl 5, version 32, subversion 1 (v5.32.1) built for MSWin32-x64-multi-thread

60 名前:29 mailto:sage [2021/12/15(水) 05:01:54.34 ID:+lf8SrwJ.net]
・ {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";
---------------------------

perl5 では {0} で定義するのは想定外?



61 名前:29 mailto:sage [2021/12/16(木) 22:14:43.92 ID:0VSoy2O4.net]
onigurumaの非包含オペレータの動作が論文と違う
正規表現 ^(?~abc) をテキスト 0123abcd に対して検索して比較すると..

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

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

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

非包含オペレータは提案から14年経ってもなお未完のままということに..

62 名前:デフォルトの名無しさん mailto:sage [2021/12/17(金) 13:32:58.43 ID:N/8v4GiQ.net]
>>61
^(?~(?<=ab)c)

63 名前:デフォルトの名無しさん mailto:sage [2021/12/17(金) 15:12:28.90 ID:wvP9ttxM.net]
記号が同じなだけで名称も説明上の動作も違うからそもそも似て非なる別物
ではなくて?

64 名前:29 mailto:sage [2021/12/17(金) 19:59:50.60 ID:t+q3CK3B.net]
>>62 それ反則w ちなみにこんなのもある
Perl正規表現雑技 : ある文字列を含まないものにマッチする正規表現
www.din.or.jp/~ohzaki/regex.htm#Without

>>63 その解釈で間違ってないと思う、oniguruma の (?~abc) は仕様が
決まった時点で別物だね、(?:(?!abc).)* の拡張版と言ったほうがしっくりくる
実用上は oniguruma 版のほうが使いやすそうだしあえて変えたんだろうね

65 名前:デフォルトの名無しさん mailto:sage [2021/12/17(金) 20:49:06.88 ID:BDVQn7Pa.net]
いやぁ、、ヒネくれちゃっただけでしょ

66 名前:デフォルトの名無しさん mailto:sage [2021/12/19(日) 06:09:19.30 ID:X6k+U6Sv.net]
成果だけ横から頂いてこっちで改変流用するわwおまえ除名なwとか言われちゃったらまあ拗ねもするさ

67 名前:デフォルトの名無しさん mailto:sage [2021/12/19(日) 08:57:20.74 ID:hMGijQ8S.net]
(?s:^(?=.*(?:トビラ|280|280|[内外]製|純正|公式))(?=.*(?:ガイジ|発狂|長文|必死|キチガイ|キチキチ)))

これが効かないんすけど何か間違えてますか?
https://egg.5ch.net/test/read.cgi/android/1638738146/

68 名前:デフォルトの名無しさん mailto:sage [2021/12/19(日) 10:54:25.85 ID:mCvaVjB9.net]
少なくともchmateだとマッチしてる
正規表現と文字列の切り替えの設定間違えてるんじゃないの

69 名前:デフォルトの名無しさん mailto:sage [2021/12/20(月) 20:18:42.66 ID:k8SAGnLj.net]
●Regular Expressionの使用環境
サクラエディタ(bregoing.dll Ver4.20 with Onigmo 6.2.0)

●検索か置換か?
検索

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

●対象データ
2021.12.19.06
192.168.1.1

●希望する結果
192.168.1.1

下の正規表現だと2021.12.19.06の021.12.19.06に一致していまいました。
/(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)/k

70 名前:69 mailto:sage [2021/12/20(月) 20:22:55.66 ID:k8SAGnLj.net]
すみません
対象データの訂正です
最初と最後に文字列があります

●対象データ
AB2021.12.19.06E
CD192.168.1.1E



71 名前:デフォルトの名無しさん mailto:sage [2021/12/20(月) 20:25:28.02 ID:cLNhpahP.net]
https://www.google.co.jp/search?q=%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE+IPv4

72 名前:デフォルトの名無しさん mailto:sage [2021/12/20(月) 20:55:56.04 ID:k8SAGnLj.net]
度々すみません
訂正があったので再度質問させてください

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

●検索か置換か?
検索

●説明
IPv4アドレスに一致させたい
条件
前後に何も含まない場合
前後に[]を含む場合
前後に半角を含む場合

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

●希望する結果
192.168.1.1
[192.168.1.1]
_192.168.1.1_ ←_は半角空白

下の正規表現だと2021.12.19.06の021.12.19.06に一致していまいました。
/(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)/k

よろしくお願いします

73 名前:72 mailto:sage [2021/12/20(月) 21:00:55.82 ID:k8SAGnLj.net]
希望する結果では[]や半角を含まずIP部分だけ一致させたいです
よろしくお願いします

74 名前:デフォルトの名無しさん mailto:sage [2021/12/20(月) 21:13:35.36 ID:cLNhpahP.net]
(?<![.0-9])(IPv4の正規表現ggrks)(?![.0-9])

75 名前:72 mailto:sage [2021/12/20(月) 21:27:00.64 ID:k8SAGnLj.net]
>>74
ありがとうございます
それだとIPv4アドレスではない部分に一致してしまいダメ
(?<![.0-9])([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})(?![.0-9])

76 名前:72 mailto:sage [2021/12/20(月) 21:31:02.39 ID:k8SAGnLj.net]
>>74
こういった結果を希望しています
よろしくお願いします

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

●希望する結果
一致しない
一致しない ←.01という表記が正しくない為
192.168.1.1 ←一致
192.168.1.1 ←[]の中を一致
192.168.1.1 ←前後の半角を除いて一致

77 名前:デフォルトの名無しさん mailto:sage [2021/12/20(月) 21:50:00.81 ID:k8/KZn4u.net]
[192.168.1.1_

78 名前:72 mailto:sage [2021/12/20(月) 22:36:54.07 ID:azxFC8Fx.net]
>>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 名前:デフォルトの名無しさん mailto:sage [2021/12/21(火) 05:04:20.96 ID:DlXpRfUq.net]
(?<![.\d])(?:(2(?:5[0-5]|[0-4]\d)|1\d\d|[1-9]?\d)\.){3}\g'1'(?![.\d])

80 名前:72 mailto:sage [2021/12/21(火) 12:15:02.94 ID:bLPLuUHJ.net]
>>79
できました
ありがとうございました!



81 名前:デフォルトの名無しさん mailto:sage [2021/12/21(火) 12:48:39.34 ID:YqPiCVQe.net]
(?<![.\d])(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.\g'1'){3}(?![.\d])

82 名前:72 mailto:sage [2021/12/21(火) 12:54:34.52 ID:bLPLuUHJ.net]
>>81
できました
ありがとうございます!
みなさん頭いいんですね・・・私は単純な正規表現しか分からず

83 名前:72 mailto:sage [2021/12/21(火) 13:04:04.34 ID:bLPLuUHJ.net]
ちなみに>>79さんや>>81さんの正規表現だと
こういった正規表現チェッカーでは一致しないのは何故なんでしょうか?
https://www.debuggex.com/
JavaScriptと表示されているリストをPythonに指定して試しました

84 名前:デフォルトの名無しさん mailto:sage [2021/12/21(火) 16:35:44.32 ID:fKMzp4yd.net]
後方参照の記法絡みかなあ

85 名前:デフォルトの名無しさん mailto:sage [2021/12/21(火) 16:46:05.57 ID:ehDQ8UlO.net]
¥をつかうか、$を使うかは、なかなか思い出せないから困る

86 名前:デフォルトの名無しさん mailto:sage [2021/12/21(火) 18:31:43.92 ID:2Q9XRXAv.net]
>>79 >>81
サクラエディタ(というか鬼車や鬼雲、bregonig.dllの正規表現)
の\dは全角数字にもマッチするから
[0-9]で検索すべき

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

サクラエディタBBSでの高田先生の過去発言
https://sakura-editor.github.io/bbslog/sf/ansi/4874.html#4887

87 名前:72 mailto:sage [2021/12/21(火) 18:47:26.57 ID:bLPLuUHJ.net]
>>86
なぜか分かりませんが全角には一致しなかったので大丈夫でした

88 名前:72 mailto:sage [2021/12/21(火) 18:54:30.58 ID:bLPLuUHJ.net]
>>86
よく確認したら全角にも一致していました
すみません

89 名前:デフォルトの名無しさん mailto:sage [2021/12/21(火) 19:19:25.77 ID:N0HCE/E4.net]
左端に(?a)をつければ\dのままでも?

90 名前:デフォルトの名無しさん mailto:sage [2021/12/21(火) 19:35:57.99 ID:aQSGSn8P.net]
Meryの\dは半角のみ
正規表現まわり含め検索はサクラよりMeryのが良いな
サクラは複数行検索不可だし



91 名前:デフォルトの名無しさん mailto:sage [2021/12/21(火) 20:39:47.81 ID:wzddSm6Q.net]
●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) ←半角括弧の中だけに一致させたい
_2603:1096:0604:00bc:0000:0000:0000:0009_ ←_は半角スペースの中だけに一致させたい
2603:1096:604:bc::9
(2603:1096:604:bc::9)
_2603:1096:604:bc::9_

●希望する結果
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
2603:1096:604:bc::9
2603:1096:604:bc::9

○試した正規表現
下の正規表現だと最後の:以降(上の例だと最後の9)が一致しませんでした
(\:\:([a-f0-9]{1,4}\:){0,6}?[a-f0-9]{0,4}|[a-f0-9]{1,4}(\:[a-f0-9]{1,4}){0,6}?\:\:|[a-f0-9]{1,4}(\:[a-f0-9]{1,4}){1,6}?\:\:([a-f0-9]{1,4}\:){1,6}?[a-f0-9]{1,4})(\/\d{1,3})?

よろしくお願いします

92 名前:デフォルトの名無しさん mailto:sage [2021/12/21(火) 23:04:26.56 ID:lAwv+hLw.net]
>>86
鬼車なら、オプション指定(?D)でdigitをASCIIだけにで

93 名前:きる
(?D)..¥d..
[]
[ここ壊れてます]

94 名前:デフォルトの名無しさん mailto:sage [2021/12/22(水) 00:48:17.09 ID:zQqayV78.net]
正直\dを[0-9]以外にもマッチさせる仕様ってどういう時に便利なのか今一つ分からん

95 名前:デフォルトの名無しさん mailto:sage [2021/12/22(水) 03:24:15.78 ID:dkzRMG/Q.net]
[0-469bc:]++

96 名前:デフォルトの名無しさん mailto:sage [2021/12/22(水) 09:44:58.18 ID:dK2CjfaN.net]
住所にしろ日付にしろ上から順に書いた方が齟齬が生じないだろうに
西洋文化圏のやつらは何が何でも省略しなきゃ気が済まないんだろうな
こんなもん略記許さない仕様の方が逆に全体的な効率は良いだろうに
フロッピーディスクの時代なら少しでも容量減らしたいのは分からなくも無いけど

97 名前:91 mailto:sage [2021/12/22(水) 10:25:10.40 ID:giUFecUL.net]
>>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
(2603:1096:604:bc::9)
_2603:1096:604:bc::9_

●希望する結果
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
2603:1096:604:bc::9
2603:1096:604:bc::9

98 名前:デフォルトの名無しさん [2021/12/22(水) 11:10:46.72 ID:j6Uulo2p.net]
>>95
個人的な本名や住所が先頭に来るのは西洋文化圏というよりイスラム圏も含めた地中海世界
プログラミング言語だと名前空間が上から順で統一されてるのに不思議だよね

99 名前:デフォルトの名無しさん mailto:sage [2021/12/22(水) 11:53:44.33 ID:dK2CjfaN.net]
>>96
>>74と同じ手法でやればいいじゃない

100 名前:91 mailto:sage [2021/12/22(水) 12:01:15.82 ID:giUFecUL.net]
>>98
ありがとうございます
どういうことでしょうか?例えば>>94さんの例を元にして下の通りにしてもIPv6以外に一致してしまいます
(?<![.0-9])([0-469bc:]++)(?![.0-9])



101 名前:デフォルトの名無しさん mailto:sage [2021/12/22(水) 16:45:06.37 ID:rmiXIWtW.net]
IP アドレスの正規表現ぐらい、公式が発表しているのでは?

102 名前:デフォルトの名無しさん mailto:sage [2021/12/22(水) 17:23:12.37 ID:Q/8wGtmi.net]
>>99
最小がわからんので{8,}は適当だが、例文の限りではこれでいける。
ちょいと調べたら16進数とのことなので0-9,a-fなんでないの?
[0-9a-f:]{8,}

103 名前:デフォルトの名無しさん mailto:sage [2021/12/22(水) 17:29:20.12 ID:SKIY34Ty.net]
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

104 名前:91 mailto:sage [2021/12/22(水) 17:33:56.16 ID:giUFecUL.net]
>>101
ありがとうございます
それだと16:54:09みたいな日付にも一致してしまいました

105 名前:デフォルトの名無しさん mailto:sage [2021/12/22(水) 17:41:16.95 ID:Q/8wGtmi.net]
>>103
そのパターン限定なら{8,}を{15,}とかで回避できる

106 名前:91 mailto:sage [2021/12/22(水) 17:52:56.27 ID:giUFecUL.net]
>>104
ありがとうございます
{9,}にしたら出来ました!

ちなみにこういうものに一致しないようにする方法はありますか?
:2603:1096:604:bc::9 ←先頭に:がある
こういう出現はないはずなんですが、もし簡単な正規表現の追加で出来たら嬉しいなあと

107 名前:91 mailto:sage [2021/12/22(水) 17:58:56.91 ID:giUFecUL.net]
>>105
出来た・・・と思ったんですが、文字数の調整で対応できない数字や英字の連続に一致してしまいダメでした

108 名前:デフォルトの名無しさん mailto:sage [2021/12/22(水) 18:06:08.63 ID:Q/8wGtmi.net]
これでどう?
ただし頭:への対応は無理
([0-9a-f:]+:){4,}[0-9a-f]+

109 名前:91 mailto:sage [2021/12/22(水) 18:17:32.37 ID:giUFecUL.net]
>>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]*

110 名前:デフォルトの名無しさん mailto:sage [2021/12/22(水) 18:29:09.14 ID:G1M4O4Y+.net]
>>108
ところどころfe80とかffffみたいにベタ書きしてるのはなぜ?



111 名前:デフォルトの名無しさん mailto:sage [2021/12/22(水) 21:01:48.91 ID:++/G/dKU.net]
忘年会ネタにどうぞ
https://github.com/tonco-miyazawa/regex_etc/blob/master/Abcent_Zero.txt
https://github.com/tonco-miyazawa/regex_etc/blob/master/OneLineDefineOperator.txt

112 名前:デフォルトの名無しさん mailto:sage [2021/12/23(木) 03:07:53.75 ID:0XYH//o1.net]
(?<!\h)(IPv6の正規表現ググレカス)(?!\h)

113 名前:デフォルトの名無しさん mailto:sage [2021/12/23(木) 09:13:03.87 ID:fgU7IqZ3.net]
>>108
>08d9c24701be
([0-9a-f:]+:){4,}[0-9a-f]+
俺の環境ではマッチしないし、しないはずだけど?

114 名前:デフォルトの名無しさん mailto:sage [2021/12/23(木) 09:14:21.91 ID:fgU7IqZ3.net]
>>108
ちなみにipv6の正規表現で検索して色々出てきたけど、下のやつから頭とお尻の(^$)とるとマッチするんだが、改行が含まれてしまう。
他は>>96がイレギュラーすぎてマッチしないのが多い。

tech-uh-oh.blogspot.com/2010/02/ipv6.html

115 名前:91 mailto:sage [2021/12/23(木) 12:05:51.36 ID:czwrZ62f.net]
>>111
ありがとうございます
IPv6の正規表現も含めて教えてほしいです

>>112
ありがとうございます
すみません、もう一度試したところ08d9c24701beには一致しませんでした
これは対象データと希望する結果に書き忘れていたのですが、
教えてもらった([0-9a-f:]+:){4,}[0-9a-f]+だと2002:a05:622a:15cc::に一致しませんでした

116 名前:91 mailto:sage [2021/12/23(木) 12:10:08.55 ID:czwrZ62f.net]
>>113
度々ありがとうございます
そのURLにある正規表現だと長すぎてサクラエディタに登録できませんでした

117 名前:デフォルトの名無しさん mailto:sage [2021/12/23(木) 12:30:01.85 ID:fgU7IqZ3.net]
>>114
([0-9a-f:]+:){4,}[0-9a-f:]+にすれば、それもマッチするけど
また要らないがマッチする可能性も出てくる。

118 名前:91 mailto:sage [2021/12/23(木) 12:52:17.35 ID:czwrZ62f.net]
>>116
何度もありがとうございます
1つの正規表現にまとめることにこだわらずに、
>>116で教えてもらったものと>>108の2つで対応したいと思います
どうもありがとうございました

>>108

119 名前:セと以下のようなものが一致せず困っていたので・・・
2001:db8::1:0:0:1
2001:db8::0:1:0:0:1
2001:0db8::1:0:0:1
[]
[ここ壊れてます]

120 名前:デフォルトの名無しさん mailto:sage [2021/12/23(木) 18:54:52.16 ID:vyeaRFwP.net]
(?<![\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:])



121 名前:91 mailto:sage [2021/12/23(木) 18:57:04.64 ID:czwrZ62f.net]
>>118
わたし宛でしょうか?
それを試したら何にも一致しませんでした・・・

122 名前:デフォルトの名無しさん mailto:sage [2021/12/23(木) 20:41:17.01 ID:XObIp/CD.net]
>>113
\sに改行が含まれるからでしょ

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

サクラエディタの鬼雲なら上記に加えて、
その他の改行種(NEL,PS,LS)や空白種(全角スペースやNBSPなど)

123 名前:デフォルトの名無しさん mailto:sage [2021/12/23(木) 21:45:21.05 ID:vyeaRFwP.net]
([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:])

124 名前:デフォルトの名無しさん mailto:sage [2021/12/24(金) 07:37:01.80 ID:MVBh4BeN.net]
(([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}|:)

125 名前:デフォルトの名無しさん mailto:sage [2021/12/24(金) 12:59:57.29 ID:OtUQWwNp.net]
短くするの?
(([0-9a-f]{1,4}):){7}(\g'2'|:)|(\g'1'()|(?=\5)(?!\6):()){1,6}\g'2'?(?=\6)

126 名前:デフォルトの名無しさん mailto:sage [2021/12/24(金) 15:17:06.00 ID:nz+3yICM.net]
すげえw
()で文字間の位置をキャプチャ出来る事もそれを参照で先読みで使える事も知らなかったわ

127 名前:デフォルトの名無しさん mailto:sage [2021/12/24(金) 16:07:46.99 ID:TnoL0oNz.net]
>>124
ごめん、先読みにする必要なかった
(([0-9a-f]{1,4}):){7}(\g'2'|:)|(\g'1'()|\5(?!\6):()){1,6}\g'2'?\6

128 名前:デフォルトの名無しさん mailto:sage [2021/12/24(金) 16:09:42.73 ID:TnoL0oNz.net]
https://www.perlmonks.org/?node_id=1226058

129 名前:デフォルトの名無しさん mailto:sage [2021/12/24(金) 23:23:23.50 ID:zm3lCbTy.net]
>>125
その表現だと↓みたいなポート番号にまで一致しちゃうYO!
2001:db8::1:80
これは表記がそもそも推奨されないからいいっちゃいいけど

130 名前:デフォルトの名無しさん mailto:sage [2021/12/25(土) 12:25:23.75 ID:e5f15Ru5.net]
世界でもトップレベルの秀才たちが決めた規格なのになんでこんなに扱いづらいんだ?
そういえばメールアドレスの規格も酷かったな〜(>>3の雑技を参照)



131 名前:デフォルトの名無しさん mailto:sage [2021/12/25(土) 12:36:10.52 ID:JZM3mrrs.net]
むしろ 出来る人 は難しいかどうかが分からないからじゃない?
なんでこの程度の事でこの人たち四苦八苦してるんだろう、ってね
税制などと同じで敢えてややこしく作って仕事作ってるという側面もあるのかもね

132 名前:デフォルトの名無しさん mailto:sage [2021/12/25(土) 12:50:35.23 ID:e5f15Ru5.net]
頭が良すぎるのも考えものだな、IT土方の気持ちなんて分からないだろうな

頭が良すぎる人の考える正規表現は大抵論理的に正しく動くが
検索効率を上げる書き方には興味が無いらしく強欲を使ったり
今回のIP6の例で言えば先頭に (?=[\h:]{6}) を置いて検索スピードを
上げようというIT土方ならではの実践的手法が使われないことが多い ex. >>125

133 名前:デフォルトの名無しさん [2021/12/25(土) 13:00:34.13 ID:Qk7G85M2.net]
老舗旅館の増築みたいなもんでしょ
後方互換性を保とうとしたらそうならざるを得ない
MS-DOSをひきずるWindowsのようなもん

134 名前:デフォルトの名無しさん mailto:sage [2021/12/25(土) 13:21:44.54 ID:e5f15Ru5.net]
windowsは増築しすぎてグシャっといきそうになってるね

135 名前:デフォルトの名無しさん mailto:sage [2021/12/25(土) 13:46:31.03 ID:JZM3mrrs.net]
まあ俺も底辺ドカタの気持ちなんてさっぱりだわ悪いけどw

136 名前:デフォルトの名無しさん mailto:sage [2021/12/25(土) 14:30:45.29 ID:y5wYV+SA.net]


137 名前:デフォルトの名無しさん mailto:sage [2021/12/25(土) 14:38:13.23 ID:e5f15Ru5.net]
たまにでいいからIT土方のことも考えて下さい
うちの会社で>>125みたいな正規表現を使ったら怒られます
チェック担当の子がヤムチャになっちゃったからやめてねって言われます

138 名前:デフォルトの名無しさん mailto:sage [2021/12/25(土) 20:41:20.89 ID:y5wYV+SA.net]
無法地帯

139 名前:デフォルトの名無しさん mailto:sage [2021/12/25(土) 22:12:05.75 ID:e5f15Ru5.net]
kkosさんここ見に来てるかな
https://github.com/kkos/oniguruma/blob/master/doc/RE.ja
539行目
×  + 不在停止 (?|...)
〇  + 不在停止 (?~|...)

来年はISO-2022-JPの年、今年も1年お疲れ様

140 名前:デフォルトの名無しさん mailto:sage [2021/12/26(日) 10:52:57.40 ID:XNM+0b8X.net]
なんだこれ

鬼雲
https://ideone.com/cefWj1



141 名前:デフォルトの名無しさん mailto:sage [2021/12/27(月) 00:34:46.64 ID:BHlowg/U.net]
>>126
これやっと理解出来た、勉強になった、ありがとう

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

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

>>138
>>47
. は (?:a|b|c|........) と書き換えられる、すなわち分岐を含む正規表現だ
これだけじゃ説明付かない結果になってるけど . を使ってる以上考えても無駄かと

142 名前:139 mailto:sage [2021/12/27(月) 19:30:29.63 ID:BHlowg/U.net]
あれ、でも他の分岐に行っても保持されるのならどの分岐を抜けてきたかの
判断はどうやってするんだろう?
繰り返しをしてる中ですべての分岐で保持が成功していたら区別が付かない
まぁ正規表現でやらずにコード書けばいいだけだけど

143 名前:デフォルトの名無しさん [2021/12/28(火) 01:38:40.34 ID:e4meyx5L.net]
高度IT人材、富士通は最大年収3500万円へ

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

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

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

来年度から副業解禁 人材多様化へ―大同生命次期社長

副業・兼務の解禁から4年、ロート製薬流で進めるキャリア支援

ロート製薬が副業をいち早く導入した「超人間的」な理由

ロート製薬会長が「副業を受け入れない会社は発展しない」と断言する理由

144 名前:デフォルトの名無しさん mailto:sage [2021/12/28(火) 08:15:55.40 ID:2qR0ux8Z.net]
富士通は電子カルテがクソ

145 名前:デフォルトの名無しさん mailto:sage [2021/12/28(火) 11:45:39.94 ID:6tSOSnH1.net]
捕獲したものを手放してnilに戻すメタ文字があればいいのか?

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

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

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

(?{code})が使えない環境では重宝する機能になる
当然名前付きのものも書き換えられるようにするのが望ましい

146 名前:デフォルトの名無しさん mailto:sage [2021/12/30(木) 00:46:28.20 ID:Z0Yaemgr.net]
>>126
https://www.perlmonks.org/?displaytype=displaycode;node_id=1226069
これすご、理論屋さんの作った芸術作品て感じ

貪欲の繰り返しがどう動くかを分かってないとこれは書けないし
(*F)の入れ方も無駄がなくて素晴らしい

147 名前:デフォルトの名無しさん mailto:sage [2021/12/30(木) ]
[ここ壊れてます]

148 名前:19:53:03.05 ID:Z0Yaemgr.net mailto: IPv6アドレスのテキスト表記
https://www.youtube.com/watch?v=EvIUZwkGWQE

予想以上に自由度が高くてワロタ
>>91にまともな回答が付かないのは必然だったのか
正規表現を作れたとしてもサクラエディタの検索欄にはたぶん入らないね
[]
[ここ壊れてます]

149 名前:デフォルトの名無しさん mailto:sage [2021/12/30(木) 20:19:42.39 ID:Z0Yaemgr.net]
そもそもIPを簡単に取り出せないようなデータというのはどんなデータだったんだろ?
普通はIPならIPと分かるようなデータの入れ方をする

非包含オペレータ (absence operator) (実験的)
https://docs.ruby-lang.org/ja/latest/doc/spec=2fregexp.html#absenceop
>例えば (?~abc) は "", "ab", "aab", "abb", "ccdd" などにはマッチしますが、
>"abc", "aabc", "ccabcdd" などにはマッチしません。

この説明では意味が伝わりにくいな
"例えば ^(?~abc)$ は" に修正したほうがいい

鬼雲は放置気味だけどこの先どうするのかな

150 名前:デフォルトの名無しさん mailto:sage [2021/12/30(木) 22:40:15.48 ID:HA6WwjkY.net]
>>145
そうなんです
サクラエディタで使えないIPv6の正規表現方法なら見つかったのですが・・・
なので諦めて複数の正規表現で対応することにしました



151 名前:デフォルトの名無しさん mailto:sage [2021/12/30(木) 23:19:26.02 ID:Z0Yaemgr.net]
>>147
これはperl等でパーサを作って検索すべき案件だろうから
テキストエディタではなかなか厳しいね
正規表現の基本的なことで分からないことがあったらまた聞きに来てね
上の正規表現の猛者たちよりも親切な回答を付けるよw

152 名前:デフォルトの名無しさん mailto:sage [2022/01/01(土) 01:28:53.52 ID:h8w5g6J4.net]
[あ-うけてめでとおござします]+






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<262KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef