Regular Expressionスレです。
質問する場合は必ず実装言語や処理系ソフトウェア名を示してください。
前スレ
Regular Expression(正規表現) Part14
https://mevius.5ch.net/test/read.cgi/tech/1489511075/
次スレは>>980宜しく
天ぷら等>>2以降
探検
Regular Expression(正規表現) Part15
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2019/09/16(月) 22:25:11.87ID:enU8we0d704デフォルトの名無しさん
2021/06/26(土) 22:47:52.84ID:jTUBzdfm ●Regular Expressionの使用環境
Powershell
●検索か置換か?
置換
●説明
フォルダにつけている日付のフォーマットを変えたい
作業範囲はカレントフォルダだけで良いです #下階層には行かない
●対象データ
[2020.12.20] AA案件 [作業者A]
[2021.04.02] DD案件 [作業者BB]
[2021.06.15] GGGGG案件 [作業者D]
[2021.07.07] BBB案件 [作業者A]
●希望する結果
[201220] AA案件 [作業者A]
[210402] DD案件 [作業者BB]
[210615] GGGGG案件 [作業者D]
[210707] BBB案件 [作業者A]
よろしくお願いします。
Powershell
●検索か置換か?
置換
●説明
フォルダにつけている日付のフォーマットを変えたい
作業範囲はカレントフォルダだけで良いです #下階層には行かない
●対象データ
[2020.12.20] AA案件 [作業者A]
[2021.04.02] DD案件 [作業者BB]
[2021.06.15] GGGGG案件 [作業者D]
[2021.07.07] BBB案件 [作業者A]
●希望する結果
[201220] AA案件 [作業者A]
[210402] DD案件 [作業者BB]
[210615] GGGGG案件 [作業者D]
[210707] BBB案件 [作業者A]
よろしくお願いします。
705デフォルトの名無しさん
2021/06/27(日) 00:07:19.19ID:9wAo5BpJ ほぼそのままだろ
www.atmarkit.co.jp/ait/articles/1411/07/news133.html
www.atmarkit.co.jp/ait/articles/1411/07/news133.html
706デフォルトの名無しさん
2021/06/28(月) 18:13:23.38ID:V/YMeLZd pythonです
.foo.xxx_var
.foo.foo.yyy_var
この二種類の形式の文字列があるとき
xxxとyyyだけほしいんですがどう書いたらいいですか?
.foo.xxx_var
.foo.foo.yyy_var
この二種類の形式の文字列があるとき
xxxとyyyだけほしいんですがどう書いたらいいですか?
707デフォルトの名無しさん
2021/06/28(月) 18:14:54.33ID:V/YMeLZd xxxとyyyの部分は可変長の英数記号です
708デフォルトの名無しさん
2021/06/28(月) 18:34:58.46ID:LBPB01By def getxy(s):
return s[s.rfind('.')+1:s.rfind('_')]
a=getxy('.foo.xxx_var')
return s[s.rfind('.')+1:s.rfind('_')]
a=getxy('.foo.xxx_var')
709デフォルトの名無しさん
2021/06/28(月) 18:39:07.90ID:JVYonSFO ('.')
('_')
顔文字みたいで可愛くてワロタ
('_')
顔文字みたいで可愛くてワロタ
710デフォルトの名無しさん
2021/06/28(月) 19:17:22.90ID:V/YMeLZd >>708
rfind知りませんでした。ありがとう
不格好だけど
findall("(.+\.)?(.+)_var")[0][1]
でも取れました。正規表現てどんな順番で書いていけばいいのかわからん…
rfind知りませんでした。ありがとう
不格好だけど
findall("(.+\.)?(.+)_var")[0][1]
でも取れました。正規表現てどんな順番で書いていけばいいのかわからん…
711デフォルトの名無しさん
2021/06/28(月) 20:24:42.57ID:dny5MV4o s='.foo.xxx_var'
re.search('([^.]*)_',s).group(1)
re.search('([^.]*)_',s).group(1)
712デフォルトの名無しさん
2021/06/28(月) 20:50:58.81ID:quG4wdoj Ruby で作ってみた
# 最後のドットと、_ の間の文字列を抜き出す。該当なしなら、nil を返す
def slice_string( input_str )
pos_1 = input_str.rindex( "." ) # 文字列の末尾から探す
return nil unless pos_1
pos_2 = input_str.index( "_", pos_1 + 1 ) # ドットの次の文字から探す
return nil unless pos_2
return input_str.slice( pos_1 + 1 ... pos_2 )
end
input_ary = %w(.foo.xxx_var .foo.foo.yyy_var .zz zz)
p input_ary.map{ |str| slice_string( str ) }
#=> [ "xxx", "yyy", nil, nil ]
# 最後のドットと、_ の間の文字列を抜き出す。該当なしなら、nil を返す
def slice_string( input_str )
pos_1 = input_str.rindex( "." ) # 文字列の末尾から探す
return nil unless pos_1
pos_2 = input_str.index( "_", pos_1 + 1 ) # ドットの次の文字から探す
return nil unless pos_2
return input_str.slice( pos_1 + 1 ... pos_2 )
end
input_ary = %w(.foo.xxx_var .foo.foo.yyy_var .zz zz)
p input_ary.map{ |str| slice_string( str ) }
#=> [ "xxx", "yyy", nil, nil ]
713デフォルトの名無しさん
2021/06/28(月) 21:04:09.77ID:3eYqyq98 >>712
このキチガイどこにでも湧くのなw
このキチガイどこにでも湧くのなw
714デフォルトの名無しさん
2021/06/28(月) 21:44:37.04ID:24AqjAIP 各言語でそれぞれ書き込む事態にでもならなきゃ自分の行いがいかにウザイかを実感できない人なんだろう
まったくの場違いだと言うのにそれに気づかないもんな
まったくの場違いだと言うのにそれに気づかないもんな
715デフォルトの名無しさん
2021/06/28(月) 21:48:35.68ID:LpQ5PmfN >>713-714
なんでお前ら相手するんだ?
なんでお前ら相手するんだ?
716デフォルトの名無しさん
2021/06/29(火) 00:51:17.13ID:f7Gcy3Ty jien
717デフォルトの名無しさん
2021/06/29(火) 13:25:19.76ID:hNYNhvVW 先頭以外の A をすべて S に置換
って一般解としてどう書くの?
AAAEAA を ASSESS にしたいとか
って一般解としてどう書くの?
AAAEAA を ASSESS にしたいとか
718デフォルトの名無しさん
2021/06/29(火) 13:47:51.52ID:g0ftD4JU (?!^)A
719デフォルトの名無しさん
2021/06/29(火) 13:49:05.67ID:FsexkEm/ (?!^)A
720デフォルトの名無しさん
2021/06/29(火) 15:16:43.44ID:W3FYE8ZM >>718-719
センキューベリーmatch
センキューベリーmatch
721デフォルトの名無しさん
2021/07/02(金) 02:33:14.69ID:aZbrSReX >>720
評価する
評価する
722デフォルトの名無しさん
2021/07/02(金) 08:13:06.57ID:Rii8+UZr 下URLにあるPerlのRegexp::Optimizerのように、正規表現を最適化するC/C++用ライブラリはご存じないですか?
https://metacpan.org/pod/Regexp::Optimizer
https://metacpan.org/pod/Regexp::Optimizer
723デフォルトの名無しさん
2021/07/02(金) 13:04:44.47ID:TPqIrTa2 ●Regular Expressionの使用環境
python3.8.5
●検索か置換か?
置換
●説明
<数字>以外の<>を外したい
●対象データ
[<< ><test<<012>>name1><> >]
●希望する結果
[ test<012>name1 ]
python3.8.5
●検索か置換か?
置換
●説明
<数字>以外の<>を外したい
●対象データ
[<< ><test<<012>>name1><> >]
●希望する結果
[ test<012>name1 ]
724デフォルトの名無しさん
2021/07/02(金) 14:24:45.40ID:jArCbPhS 可変長の否定戻り読みが使えるなら
<(?!\d+>)|(?<!<\d+)>
数字の桁が3桁固定なら
<(?!\d+>)|(?<!<\d\d\d)>
<(?!\d+>)|(?<!<\d+)>
数字の桁が3桁固定なら
<(?!\d+>)|(?<!<\d\d\d)>
725デフォルトの名無しさん
2021/07/02(金) 14:35:17.70ID:TPqIrTa2726デフォルトの名無しさん
2021/07/02(金) 14:47:29.27ID:TPqIrTa2 あれか
<(\d+)>のサイズ取得して動的にするのか…
<(\d+)>のサイズ取得して動的にするのか…
727デフォルトの名無しさん
2021/07/02(金) 14:52:33.23ID:dFaH8qnm728デフォルトの名無しさん
2021/07/02(金) 14:54:06.60ID:DfuUcF9q >>723
pythonなら正規表現だけにこだわらなきゃ<¥d+>さえ拾えばどうとでもなるだろ。
pythonなら正規表現だけにこだわらなきゃ<¥d+>さえ拾えばどうとでもなるだろ。
729デフォルトの名無しさん
2021/07/02(金) 15:02:33.69ID:u75TM6NR このスレって有能な人いてステキ///
730デフォルトの名無しさん
2021/07/02(金) 15:14:25.77ID:t4sxB6eQ 数値がネストした構造の一番内側にあるとは限らないんじゃないの?
731デフォルトの名無しさん
2021/07/02(金) 16:18:03.06ID:TPqIrTa2732デフォルトの名無しさん
2021/07/02(金) 16:56:02.25ID:dFaH8qnm >>731
| の左右どちらに一致した場合でも \1 に置換している
ただし片方にしか \1 に対応する括弧がない——というのがミソ
左側 (<[0-9]+>) に一致したときの \1 は 一致した全体なので結果として何も変わらない
右側 [<>] に一致したときの \1 は空なので削除される
| の左右どちらに一致した場合でも \1 に置換している
ただし片方にしか \1 に対応する括弧がない——というのがミソ
左側 (<[0-9]+>) に一致したときの \1 は 一致した全体なので結果として何も変わらない
右側 [<>] に一致したときの \1 は空なので削除される
733デフォルトの名無しさん
2021/07/02(金) 17:12:17.66ID:3MNaXJzy <><abc><value<123<x>>/value><>
こういうパターンはあるのか?
こういうパターンはあるのか?
734デフォルトの名無しさん
2021/07/02(金) 17:17:38.07ID:+v1CDJ0v > ●説明
> <数字>以外の<>を外したい
> <数字>以外の<>を外したい
735デフォルトの名無しさん
2021/07/02(金) 17:22:56.52ID:TPqIrTa2736デフォルトの名無しさん
2021/07/02(金) 17:26:47.31ID:3MNaXJzy737デフォルトの名無しさん
2021/07/02(金) 17:29:30.28ID:+v1CDJ0v こいつ無能そう
738デフォルトの名無しさん
2021/07/02(金) 17:49:16.07ID:TPqIrTa2 size = 4
s1 = entry.get()
s2 = re.sub(r'(<\d+>)|[<>]|[\\/:*?"|]+', r'\1', s1)
ss = [re.sub(r'<(\d+)>', lambda m: f'{{:0{len(m[1])}}}'.format(int(m[1])+i), s2) for i in range(size)]
簡単な範囲リネームソフト作ってて、windowsで使えない文字外して<数字>はカウントアップ がしたかったのでこれで大丈夫のようです.たぶん
入力(スタート値) dir<001>のとき リネーム範囲が2ならdir001,dir002を生成するみたいな
s1 = entry.get()
s2 = re.sub(r'(<\d+>)|[<>]|[\\/:*?"|]+', r'\1', s1)
ss = [re.sub(r'<(\d+)>', lambda m: f'{{:0{len(m[1])}}}'.format(int(m[1])+i), s2) for i in range(size)]
簡単な範囲リネームソフト作ってて、windowsで使えない文字外して<数字>はカウントアップ がしたかったのでこれで大丈夫のようです.たぶん
入力(スタート値) dir<001>のとき リネーム範囲が2ならdir001,dir002を生成するみたいな
739デフォルトの名無しさん
2021/07/02(金) 18:45:34.59ID:Y9y/b0vz でもさー
結局のところ自分の理解できる範囲で対処できないとブラックボックスでしかないから保守できないよな
結局のところ自分の理解できる範囲で対処できないとブラックボックスでしかないから保守できないよな
740デフォルトの名無しさん
2021/07/02(金) 19:31:10.32ID:aZbrSReX 掲示板で説明できることには限界があるからな
741デフォルトの名無しさん
2021/07/02(金) 20:03:30.56ID:6v6/dX3F >>736
なんの環境だと消えないんだろう
なんの環境だと消えないんだろう
742デフォルトの名無しさん
2021/07/02(金) 21:23:02.60ID:8o23sM1E ネストがある構造物は、パーサーを使わないと保守できない。
Ruby のNokogiri みたいな、XML/HTML パーサー
正規表現でバグると、他人が手を出せないので、
結局、パーサーで作り直しになる
アンチパターンの常識
モジュール・デザインパターンの知識が無いから、
何にでも正規表現を使う、香具師と言われている
Ruby のNokogiri みたいな、XML/HTML パーサー
正規表現でバグると、他人が手を出せないので、
結局、パーサーで作り直しになる
アンチパターンの常識
モジュール・デザインパターンの知識が無いから、
何にでも正規表現を使う、香具師と言われている
743デフォルトの名無しさん
2021/07/02(金) 21:48:40.11ID:QH8xfbBh ネストがある構造はRDBで管理するという方法もあるな
744デフォルトの名無しさん
2021/07/02(金) 23:39:59.09ID:aZbrSReX >>727 のパターンは構造を見てない
ノンマッチな><だってホイホイ喰っちまう奴なんだぜ
ノンマッチな><だってホイホイ喰っちまう奴なんだぜ
745デフォルトの名無しさん
2021/07/03(土) 03:31:09.01ID:mR1/t/06 manの解析させるルーチンで無制限にネスト潜るの一度だけ書いたこと思い出したわ
746デフォルトの名無しさん
2021/07/05(月) 13:22:47.46ID:a0633hZA 1行に「半角スペースと全角スペースが3文字以上ある時」を検出するにはどうすればいいのでしょう?
747デフォルトの名無しさん
2021/07/05(月) 13:38:25.68ID:yW7vm9zn (.*\040|.*\201\100){3}
とかか
とかか
748デフォルトの名無しさん
2021/07/05(月) 13:43:46.12ID:a0633hZA >>747
ありがとう試してみます
ありがとう試してみます
749デフォルトの名無しさん
2021/07/05(月) 13:46:58.03ID:yW7vm9zn750デフォルトの名無しさん
2021/07/05(月) 18:52:47.25ID:jQnBoLSl ●Regular Expressionの使用環境
サクラエディタ
●検索か置換か?
検索(正規表現で色を付けるため)
●説明
各行の「CR」または「LF」の改行コード部分に一致(CR+LFは一致させない)
●対象データ
あ\r
い\n
う\r\n
●希望する結果
\r
\n
よろしくお願いします
サクラエディタ
●検索か置換か?
検索(正規表現で色を付けるため)
●説明
各行の「CR」または「LF」の改行コード部分に一致(CR+LFは一致させない)
●対象データ
あ\r
い\n
う\r\n
●希望する結果
\r
\n
よろしくお願いします
751750
2021/07/05(月) 19:33:48.25ID:jQnBoLSl なんとか自分で調べて見たんですが、下の正規表現で合ってますか?
[\r\n](?!\n)$
[\r\n](?!\n)$
752デフォルトの名無しさん
2021/07/05(月) 21:45:00.65ID:oDqG8EZQ (\r(?!\n))|((?<!\r)\n)
でどうだろう
でどうだろう
753デフォルトの名無しさん
2021/07/05(月) 22:18:11.17ID:lQZs6uo5 \r$|[^\r]\n$
じゃダメなのかな?
じゃダメなのかな?
754デフォルトの名無しさん
2021/07/09(金) 02:51:04.10ID:Cp8DUWjQ 文中もしくは単独で特定の文字列がある場合を除く
ってどうやるの?
ってどうやるの?
755デフォルトの名無しさん
2021/07/09(金) 07:34:09.88ID:XAnKbPPo ^(?~特定の文字列)$
^(?!.*特定の文字列).*$
^(?!.*特定の文字列).*$
756デフォルトの名無しさん
2021/07/09(金) 09:09:31.42ID:hfuqSqCj わざわざ貪欲にする必要性がわからん
757デフォルトの名無しさん
2021/07/11(日) 13:43:32.51ID:MYTG6y7m758デフォルトの名無しさん
2021/07/11(日) 13:46:58.01ID:MYTG6y7m759デフォルトの名無しさん
2021/07/11(日) 19:12:06.67ID:nwBpGTGG 近似解のなにが近似なのかわからん
760デフォルトの名無しさん
2021/07/11(日) 21:26:31.70ID:I5zdxibD761デフォルトの名無しさん
2021/07/12(月) 09:02:05.45ID:twuyj4UD >>759
他の正規表現とつなげると問題が起こる。
例えばコメントの直後にbbbが来るのを \/\*.*?\*\/bbb として
/* */aaa/* */bbb
にマッチさせると /* */aaa の部分も含んで全体がマッチしてしまう。
他の正規表現とつなげると問題が起こる。
例えばコメントの直後にbbbが来るのを \/\*.*?\*\/bbb として
/* */aaa/* */bbb
にマッチさせると /* */aaa の部分も含んで全体がマッチしてしまう。
762デフォルトの名無しさん
2021/07/12(月) 15:36:01.58ID:mfnmNh+4 なるほど
ありがとうございます
ありがとうございます
763デフォルトの名無しさん
2021/07/12(月) 16:40:03.21ID:mfnmNh+4 でも少なくとも解2でいいんじゃないか
表現力もたいして変わらない
数文字減るだけののシンタックスシュガーに見える
表現力もたいして変わらない
数文字減るだけののシンタックスシュガーに見える
764デフォルトの名無しさん
2021/07/29(木) 13:50:04.06ID:GMofCqjV ●Regular Expressionの使用環境
cygwin grep
●検索か置換か?
検索
●説明
テキストファイルに含まれる改行コードの検索
●対象データ
\r\n(0x0d0a)と\r(0x0d)が混在しているテキストファイル
●希望する結果
それらを検出して \r\nに統一したい。
grep -n -U -P '\x0d'
で検索をかけるとヒットするが
grep -n -U -P '\x0a'
ではなぜか1行もヒットしない
バイナリで確認すると0x0d0aはちゃんと存在しています・・。
とりあえずまずは0x0aを検索にヒットさせたいです。
その後
grep -n -U -P '\x0d[^\x0a]'
のような感じで0x0dの後ろが0x0aでない行を検索して置換できれば良いかなと考えています。
よろしくおねがいします
cygwin grep
●検索か置換か?
検索
●説明
テキストファイルに含まれる改行コードの検索
●対象データ
\r\n(0x0d0a)と\r(0x0d)が混在しているテキストファイル
●希望する結果
それらを検出して \r\nに統一したい。
grep -n -U -P '\x0d'
で検索をかけるとヒットするが
grep -n -U -P '\x0a'
ではなぜか1行もヒットしない
バイナリで確認すると0x0d0aはちゃんと存在しています・・。
とりあえずまずは0x0aを検索にヒットさせたいです。
その後
grep -n -U -P '\x0d[^\x0a]'
のような感じで0x0dの後ろが0x0aでない行を検索して置換できれば良いかなと考えています。
よろしくおねがいします
765デフォルトの名無しさん
2021/07/29(木) 14:18:21.31ID:aFdGt9X4 無駄無駄無駄〜
766デフォルトの名無しさん
2021/07/29(木) 14:21:22.66ID:J3IrN4Ey >>764
-aも足してgrep -nUaPでも試してみては?
-aも足してgrep -nUaPでも試してみては?
767デフォルトの名無しさん
2021/07/29(木) 18:49:46.76ID:QYfnOwKH 0xが邪魔だったりして
768デフォルトの名無しさん
2021/07/29(木) 21:48:27.13ID:j2JISquU769デフォルトの名無しさん
2021/07/29(木) 21:52:11.90ID:j2JISquU770デフォルトの名無しさん
2021/07/29(木) 21:56:20.74ID:j2JISquU >>764
あとは-Uオプションを外してどうなるか試してみるとか
あとは-Uオプションを外してどうなるか試してみるとか
771デフォルトの名無しさん
2021/07/30(金) 00:49:58.41ID:N3W+nBLQ 単純に\nがgrepに食われてるだけだと思う
オプションに-zを入れれば\0区切りになるから\nは残せそうだけど
ファイル全体が1行になるだろうからやりたい事は多分できない
\rを\r\nに統一したいなら各行の末尾以外の\rを\r\nに置換すれば良さそう
grepで検索だけして手作業で直すつもりなのかな
オプションに-zを入れれば\0区切りになるから\nは残せそうだけど
ファイル全体が1行になるだろうからやりたい事は多分できない
\rを\r\nに統一したいなら各行の末尾以外の\rを\r\nに置換すれば良さそう
grepで検索だけして手作業で直すつもりなのかな
772デフォルトの名無しさん
2021/07/31(土) 20:32:32.88ID:jvyZNadn >>764
解決したの?
解決したの?
773デフォルトの名無しさん
2021/07/31(土) 20:46:25.03ID:Op1DTI/B テキストファイルなんだよね?
だったらテキストエディタで開いて改行コードをCRLFに指定して保存するだけで
改行コードは揃うと思うけど
俺の使ってるエディタでCRLF,CR,LFの3つを混在させたファイルでやってみたけど
全部CRLFに変わってくれたよ
だったらテキストエディタで開いて改行コードをCRLFに指定して保存するだけで
改行コードは揃うと思うけど
俺の使ってるエディタでCRLF,CR,LFの3つを混在させたファイルでやってみたけど
全部CRLFに変わってくれたよ
774デフォルトの名無しさん
2021/08/01(日) 06:07:28.90ID:jVmJEbam grepは行単位で処理するが、行は\nで終わることになってる
>>771のいうようにgrepが\nを食ってしまうので\nは検索できない
行末にマッチさせたいなら\nではなく$を使う
が、改行コード変換したいだけならCygwinに最初から入ってるunix2dos/dos2unixでも使えばいい
>>771のいうようにgrepが\nを食ってしまうので\nは検索できない
行末にマッチさせたいなら\nではなく$を使う
が、改行コード変換したいだけならCygwinに最初から入ってるunix2dos/dos2unixでも使えばいい
775デフォルトの名無しさん
2021/08/01(日) 21:54:31.32ID:9jBEmz65776デフォルトの名無しさん
2021/08/01(日) 23:37:51.19ID:jVmJEbam >>775
dos2unix/unix2dosは旧macの改行も変換できるので問題ない
dos2unix/unix2dosは旧macの改行も変換できるので問題ない
777デフォルトの名無しさん
2021/08/18(水) 07:15:11.84ID:zZ9UTeBf ニュー速VIP板
(?<=ニュー速)VIP(?=板)
↑これは分かるけど
(?=ニュー速)VIP(?<=板)
↑これが分からん
(?<=ニュー速)VIP(?=板)
↑これは分かるけど
(?=ニュー速)VIP(?<=板)
↑これが分からん
778デフォルトの名無しさん
2021/08/18(水) 08:14:34.80ID:zKbbX4Ws (?=ニュー速)VIP
VIP(?<=板)
これらに一致するものは有り得ない
(?=.*ニュー速)VIP
こうなら有り得る
先読み
(?=abc)
はabcの左側aの手前の「位置」に一致するもの
xabcとあればxとaの間の位置に一致
戻り読み
(?<=abc)
は先読みと反対でabcの後ろcの後の「位置」に一致するもの
abcxとあればcとxの間の位置に一致
つまり
(?=ニュー速) は「ニュー速」の「ニ」の手前の位置に一致するものなので
(?=ニュー速)ニュー速 で無ければ絶対に一致しない条件式となる
VIP(?<=板)
これらに一致するものは有り得ない
(?=.*ニュー速)VIP
こうなら有り得る
先読み
(?=abc)
はabcの左側aの手前の「位置」に一致するもの
xabcとあればxとaの間の位置に一致
戻り読み
(?<=abc)
は先読みと反対でabcの後ろcの後の「位置」に一致するもの
abcxとあればcとxの間の位置に一致
つまり
(?=ニュー速) は「ニュー速」の「ニ」の手前の位置に一致するものなので
(?=ニュー速)ニュー速 で無ければ絶対に一致しない条件式となる
779デフォルトの名無しさん
2021/08/18(水) 08:27:16.61ID:6oAKTuRB 焦りすぎ
780デフォルトの名無しさん
2021/08/18(水) 09:49:36.54ID:zZ9UTeBf >>778
ああ分かった /VIP(?<=IP)/ というのはVIPの右に(?)がある事からしてVIPのPの右の位置にマシンがカーソルを合わせて次に<という左矢印がある事からしてカーソルの左側にPがあるかどうかを探って次にその一つ左にカーソルを動かしてそのカーソルの左側にIがあるかを探るって訳か
文字にするとややこしいけどイメージはしやすいな
ああ分かった /VIP(?<=IP)/ というのはVIPの右に(?)がある事からしてVIPのPの右の位置にマシンがカーソルを合わせて次に<という左矢印がある事からしてカーソルの左側にPがあるかどうかを探って次にその一つ左にカーソルを動かしてそのカーソルの左側にIがあるかを探るって訳か
文字にするとややこしいけどイメージはしやすいな
781デフォルトの名無しさん
2021/08/18(水) 10:53:19.72ID:tjZSC3cn > ニュー速VIP板ニュー速板
二つ目の「ニュー速」だけを対象にしたい
(?<=VIP板)ニュー速
前方に「VIP板」のある「ニュー速」
一つ目の「ニュー速」だけを対象にしたい
ニュー速(?=VIP板)
後方に「VIP板」のある「ニュー速」
二つ目の「ニュー速」だけを対象にしたい
(?<=VIP板)ニュー速
前方に「VIP板」のある「ニュー速」
一つ目の「ニュー速」だけを対象にしたい
ニュー速(?=VIP板)
後方に「VIP板」のある「ニュー速」
782デフォルトの名無しさん
2021/08/18(水) 11:43:36.15ID:h7WQfPHf (否|肯)定(先|後)読みは、^(行頭)や$(行末)と同様に"位置"にマッチするメタ文字(「アンカー」)として機能する
783デフォルトの名無しさん
2021/08/20(金) 00:20:17.08ID:qpe5vMDv ここにある正規表現サンプルのURLを取得する正規表現ですけど
間違ってないですか?
https://www.megasoft.co.jp/mifes/seiki/s310.html
urlに'があるurlだと'の後が取得できなくなる。
間違ってないですか?
https://www.megasoft.co.jp/mifes/seiki/s310.html
urlに'があるurlだと'の後が取得できなくなる。
784デフォルトの名無しさん
2021/08/20(金) 01:44:25.03ID:kY+JN5EE >>783
間違ってるけどメタ文字解説読めばそんなこと分かるだろ
間違ってるけどメタ文字解説読めばそんなこと分かるだろ
785デフォルトの名無しさん
2021/08/20(金) 03:11:03.15ID:WG/a2fPY 厳密なのはいつもの
http://www.din.or.jp/~ohzaki/perl.htm#httpURL
http://www.din.or.jp/~ohzaki/perl.htm#httpURL
786デフォルトの名無しさん
2021/08/20(金) 10:49:36.74ID:nGw5woYj これなんで5matchsなの?
https://i.imgur.com/nxnFsqo.jpg
https://i.imgur.com/nxnFsqo.jpg
787デフォルトの名無しさん
2021/08/20(金) 10:57:32.68ID:OdebcBr3 ピンクの線が5本表示されとるやろ
788デフォルトの名無しさん
2021/08/20(金) 14:58:31.43ID:bheJjdjJ (abc){0}(def){0}
789デフォルトの名無しさん
2021/08/20(金) 23:05:42.97ID:P1i1BIPh790デフォルトの名無しさん
2021/08/20(金) 23:47:12.81ID:WG/a2fPY 基本的にgreedyだから
791デフォルトの名無しさん
2021/08/21(土) 09:01:29.88ID:juYH2QqI abc(def)?|def
空文字に一致しないよう書くべき
空文字に一致しないよう書くべき
792デフォルトの名無しさん
2021/08/25(水) 01:56:14.92ID:DUWK9/dO windowsなんですが、正規表現を使ってファイルのリネームしたいです
hofajkfjda.jpg
fasfdajl.jpg
というファイルがあった場合
new1-hofajkfjda.jpg
new2-fasfdajl.jpg
としたいです
連番を含むのですが、正規表現で可能でしょうか?
また、何のツールを使うといいでしょうか?できればlinuxとwindowsで共通で使えるものがいいんですが。
hofajkfjda.jpg
fasfdajl.jpg
というファイルがあった場合
new1-hofajkfjda.jpg
new2-fasfdajl.jpg
としたいです
連番を含むのですが、正規表現で可能でしょうか?
また、何のツールを使うといいでしょうか?できればlinuxとwindowsで共通で使えるものがいいんですが。
793デフォルトの名無しさん
2021/08/25(水) 05:11:18.76ID:DJHRbWtG それ正規表現の話じゃないよねスレチ
ファイル名降順(昇順)で頭に(new連番-)付加ならFlexible Renamerとか色んなリネームソフトで出来る
任意の順ならバッチやPowerShell
後は該当スレでどうぞ
ファイル名降順(昇順)で頭に(new連番-)付加ならFlexible Renamerとか色んなリネームソフトで出来る
任意の順ならバッチやPowerShell
後は該当スレでどうぞ
794デフォルトの名無しさん
2021/08/25(水) 10:49:27.59ID:DUWK9/dO 正規表現では連番は無理なのですか?
795デフォルトの名無しさん
2021/08/25(水) 11:00:10.58ID:1f33yFBx 不可能じゃないけど、近所のコンビニへ行くのに絶対にプライベートジェットで行きたいですとか言われてる感じ
もっと他に簡単で向いている方法があるでしょって話
もっと他に簡単で向いている方法があるでしょって話
796デフォルトの名無しさん
2021/08/25(水) 11:02:04.86ID:pNx7VLY8 文字列の集合を表す記法が正規表現
連番という集合を示せるならできるかもね
自分は知らないけど
連番という集合を示せるならできるかもね
自分は知らないけど
797デフォルトの名無しさん
2021/08/25(水) 11:08:38.01ID:0azwHm+I798デフォルトの名無しさん
2021/08/25(水) 11:30:25.04ID:DUWK9/dO799デフォルトの名無しさん
2021/08/25(水) 11:40:19.51ID:b/tFJsW5 質問続けるならせめて礼くらい言ってからにしろ
そもそももうスレチなんだから他へ行け池沼
そもそももうスレチなんだから他へ行け池沼
800デフォルトの名無しさん
2021/08/25(水) 12:25:51.34ID:pNx7VLY8801デフォルトの名無しさん
2021/08/25(水) 13:21:49.43ID:T8xCLAXo Ruby で作った。
fileutils のDryRun を使ったので、実際には実行されない。
結果を予測して、表示するだけ
require 'fileutils'
# 絶対パスのディレクトリ名の後ろに、* を付けること!
# . で始まる、隠し directory, file を除く
dir_path = "C:/Users/Owner/Documents/*.jpg"
target_dir = File.dirname( dir_path ) # ディレクトリパスだけを取り出す
Dir.glob( dir_path )
.select { |full_path| File.file?( full_path ) } # ファイルのみ
.each.with_index( 1 ) do |full_path, idx| # index は、1 から始まる
dest_path = target_dir + "/new#{ idx }-" + File.basename( full_path )
FileUtils::DryRun.move( full_path, dest_path )
end
出力
mv C:/Users/Owner/Documents/abc.jpg
C:/Users/Owner/Documents/new1-abc.jpg
mv C:/Users/Owner/Documents/xyz.jpg
C:/Users/Owner/Documents/new2-xyz.jpg
fileutils のDryRun を使ったので、実際には実行されない。
結果を予測して、表示するだけ
require 'fileutils'
# 絶対パスのディレクトリ名の後ろに、* を付けること!
# . で始まる、隠し directory, file を除く
dir_path = "C:/Users/Owner/Documents/*.jpg"
target_dir = File.dirname( dir_path ) # ディレクトリパスだけを取り出す
Dir.glob( dir_path )
.select { |full_path| File.file?( full_path ) } # ファイルのみ
.each.with_index( 1 ) do |full_path, idx| # index は、1 から始まる
dest_path = target_dir + "/new#{ idx }-" + File.basename( full_path )
FileUtils::DryRun.move( full_path, dest_path )
end
出力
mv C:/Users/Owner/Documents/abc.jpg
C:/Users/Owner/Documents/new1-abc.jpg
mv C:/Users/Owner/Documents/xyz.jpg
C:/Users/Owner/Documents/new2-xyz.jpg
802デフォルトの名無しさん
2021/08/25(水) 18:27:43.69ID:WqMYsX4p 複数行モード出なくても改行に一致させる事は可能ですか?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国国営メディア「沖縄は日本ではない」… ★5 [BFU★]
- 【速報】 高市政権、「日本版DOGE」を立ち上げ 米国で歳出削減をした「政府効率化省(DOGE)」になぞらえたもの [お断り★]
- 高市政権にパイプ役不在…日中高まる緊張 公明党の連立離脱影響、自民内にも懸念「自分でまいた種は自分で刈り取ってもらわないと」★2 [ぐれ★]
- 台湾声明 「台湾は独立した主権国家、中国は台湾を統治したことがなく、中国は口出しする権利ない」 中国が高市首相に抗議で ★7 [お断り★]
- 日本が「世界で最も魅力的な国」1位に!✨「魅力的な都市」では東京が2位 「魅力的な地域」は北海道が7位に [煮卵★]
- 【速報】 日経平均の下落率3%超す、財政懸念で長期金利上昇 [お断り★]
- 吉村はん「高市さんは発言を撤回する必要ないですよ。中国の大阪総領事が謝罪すべき」 [256556981]
- 中国「高市が謝罪撤回しないとこれ全部なくなるけどどうする?」 [931948549]
- 日経平均、49000円割れ 国賊高市を許すな [402859164]
- 東浩紀「日本はいままさに駆け引きをしている。」高市有事にピシャリ [834922174]
- 高市の放漫財政が原因で日本国債大暴落!!!ザイム真理教崩壊へ!!! [252835186]
- 【高市経済】日経平均マイナス1600円!、金利1.76%!ドル円155円!世界恐慌へ [219241683]
