[過去ログ] Regular Expression(正規表現) Part15 (1002レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
133
(4): デフォルトの名無しさん [sage] 2020/03/22(日)11:16 ID:nQo0XPUd(1/8)
●Regular Expressionの使用環境
VisualWorks 7.7NC Regex11パーセル

●検索か置換か?
検索

●説明
jpgファイルの連番部分を取り出したい

なお正規表現にいくつか制約があります
先読みと後読みはできません (?= (?! (?<= (?<! などが未実装
最小一致も実装されていません
グループやキャプチャは可能です

'.*:^isDigit:(:isDigit:+)¥.(:isAlphabetic:+)$' asRegex. などとやっていましたが
これだと3333.jpgなどのパターンに対応できないので
'.*:^isDigit:?(:isDigit:+)¥.(:isAlphabetic:+)$' asRegex.
とやるとそもそもマッチしません
正規表現だけでやるうまい方法が見出せませんでした
isDigitは ¥d
isAlphabeticは [a-z] と読み替えできます

●対象データ
0000_1111_2222_3333.jpg
_0000_1111_2222_3333.jpg
3333.jpg

●希望する結果
3333
3333
3333
138
(1): デフォルトの名無しさん [sage] 2020/03/22(日)12:39 ID:nQo0XPUd(2/8)
>>134
その辺は捨てます
拡張子直前の数字だけを連番扱いです

>>135
それでいいです
書き方が変わってますが考え方は一緒です

>>137
ないとマッチしませんでした
139
(1): デフォルトの名無しさん [sage] 2020/03/22(日)12:41 ID:nQo0XPUd(3/8)
>>136
試しましたがマッチしません
140
(1): デフォルトの名無しさん [sage] 2020/03/22(日)12:43 ID:nQo0XPUd(4/8)
書き忘れましたが
ファイル名だけでなくファイルパスを含む場合があります・・

ex.
/a/b/c/d/_0000_1111_2222_3333.jpg

3333.jpgのようなパターンさえなければ対応できているのですが
これが来た場合にうまくいきません
142: デフォルトの名無しさん [sage] 2020/03/22(日)13:27 ID:nQo0XPUd(5/8)
>>141
エスケープ付けてテストしてあります
144: デフォルトの名無しさん [sage] 2020/03/22(日)13:33 ID:nQo0XPUd(6/8)
>>143
マッチします
150: デフォルトの名無しさん [sage] 2020/03/22(日)15:07 ID:nQo0XPUd(7/8)
>>145
先頭からスキャンするメソッドしかないようです
試して見たところうまく行きそうなのでテストしています
あまり関係ないですがisDigitやisAlphabetic自体がメソッド名で
char.isDigit(); みたいに内部的に呼ばれています

>>147
それだと最長一致の関係で
3333のうち3だけ取り出されてしまいます

>>149
こちらもうまく行きそうです

後ほど結果ご報告致します
152: デフォルトの名無しさん [sage] 2020/03/22(日)15:30 ID:nQo0XPUd(8/8)
一通り検査して全てパスできました
皆様ありがとうございました

それにしてもうまい方法があるものですね勉強になります・・
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.040s