>>16
お題スレの人が総当たりソルバー作ってくれた
https://mevius.5ch.net/test/read.cgi/tech/1564310397/757
Regular Expression(正規表現) Part15
レス数が1000を超えています。これ以上書き込みはできません。
39デフォルトの名無しさん
2019/10/12(土) 19:38:36.96ID:vBnCHMzu2019/10/29(火) 11:16:30.73ID:czk9+d/A
●Regular Expressionの使用環境
サクラエディタ bregoning.dll ver 4.12
●検索か置換か?
置換
●説明
をふくむ行(複数)を削除
●対象データ
A.jpg
B.jpg
C.jpg
●希望する結果
A.jpg
Bだけを削除するなら^.*B.*\nってわかるんですけど
B、Cを削除する方法がわかりません
誰か教えてください よろしくお願いします
サクラエディタ bregoning.dll ver 4.12
●検索か置換か?
置換
●説明
をふくむ行(複数)を削除
●対象データ
A.jpg
B.jpg
C.jpg
●希望する結果
A.jpg
Bだけを削除するなら^.*B.*\nってわかるんですけど
B、Cを削除する方法がわかりません
誰か教えてください よろしくお願いします
2019/10/29(火) 11:28:33.00ID:Ef61zXRp
2019/10/30(水) 12:29:04.54ID:n2bLSC2q
を含む行を削除
でググればすぐに見付かるんだが
ttps://yanohirota.com/regex-delete-row/
キーワードを含む行(複数指定) ^.*(キーワード1|キーワード2).*$(\r\n|\r|\n)?
でググればすぐに見付かるんだが
ttps://yanohirota.com/regex-delete-row/
キーワードを含む行(複数指定) ^.*(キーワード1|キーワード2).*$(\r\n|\r|\n)?
43デフォルトの名無しさん
2019/10/31(木) 18:25:55.12ID:KC+T8umE ●Regular Expressionの使用環境
Mery
●検索か置換か?
置換
●説明
パターンにマッチする行までの全ての行をキャプチャしたい
●対象データ
20191001
吾輩は猫である
名前はまだ無い
……
20191002
親譲りの無鉄砲で
子供の頃から
損ばかりしている
……
●希望する結果
20191001[Tab]"吾輩は猫である
名前はまだ無い
……"
[改行]
20191002[Tab]"親譲りの無鉄砲で
子供の頃から
損ばかりしている
……"
日付と本文が交互に現れるテキストを日付と本文とに分けてキャプチャして置換したいのですが、上手く行きません。
最短一致を使用すると本文が一行しかキャプチャできないし、最長一致ですと最後の日付までの全行がキャプチャされてしまいます。
どうかご教示下さい。
Mery
●検索か置換か?
置換
●説明
パターンにマッチする行までの全ての行をキャプチャしたい
●対象データ
20191001
吾輩は猫である
名前はまだ無い
……
20191002
親譲りの無鉄砲で
子供の頃から
損ばかりしている
……
●希望する結果
20191001[Tab]"吾輩は猫である
名前はまだ無い
……"
[改行]
20191002[Tab]"親譲りの無鉄砲で
子供の頃から
損ばかりしている
……"
日付と本文が交互に現れるテキストを日付と本文とに分けてキャプチャして置換したいのですが、上手く行きません。
最短一致を使用すると本文が一行しかキャプチャできないし、最長一致ですと最後の日付までの全行がキャプチャされてしまいます。
どうかご教示下さい。
2019/10/31(木) 20:12:39.29ID:qSOPmN+b
>43
検索
(^[0-9]{8})\n
置換
\n$1\t
検索
(^[0-9]{8})\n
置換
\n$1\t
2019/11/01(金) 00:19:13.27ID:l+SDkm5c
Ruby では、
text = <<"EOT"
20191001
あ
20191002
い
う
EOT
# キャプチャー部分の、#{ $1 } は、8桁の数字
p res = text.gsub( /^(\d{8})\n/ ) { "\n#{ $1 }\t" }
print res
出力
[空行]
20191001[Tab]あ
[空行]
20191002[Tab]い
う
text = <<"EOT"
20191001
あ
20191002
い
う
EOT
# キャプチャー部分の、#{ $1 } は、8桁の数字
p res = text.gsub( /^(\d{8})\n/ ) { "\n#{ $1 }\t" }
print res
出力
[空行]
20191001[Tab]あ
[空行]
20191002[Tab]い
う
46デフォルトの名無しさん
2019/11/01(金) 08:08:52.32ID:TORoDjzQ2019/11/01(金) 09:29:10.19ID:M2kmurNA
2019/11/01(金) 09:30:04.91ID:M2kmurNA
一応置換はこれ
$1¥t"$2"
$1¥t"$2"
2019/11/01(金) 11:19:24.96ID:XqhX+0kD
(^\d{8})\n((?~^\d{8}))$
\1\t"\2"
最後の行が改行されてると"がズレるからそこだけ手作業
\1\t"\2"
最後の行が改行されてると"がズレるからそこだけ手作業
2019/11/01(金) 11:25:13.23ID:zrbJp7o3
negative lookahead
https://regex101.com/r/DBWwcI/1
最下行に日付+改行を付け足せばORが一つ減って少し読みやすい
https://regex101.com/r/R3MQz7/1
https://regex101.com/r/DBWwcI/1
最下行に日付+改行を付け足せばORが一つ減って少し読みやすい
https://regex101.com/r/R3MQz7/1
51デフォルトの名無しさん
2019/11/01(金) 13:33:34.02ID:i0nQhs53 >>43
^([0-9]{8})\n((?:(?!\n[0-9]{8}\n)[\S\s])+)
^([0-9]{8})\n((?:(?!\n[0-9]{8}\n)[\S\s])+)
2019/11/01(金) 13:55:21.62ID:IH7Homqm
(?m)(^[0-9]{8}$)\n(.*?)(?=\n[0-9]{8}$|\Z)
(?m)(^[0-9]{8}$)\n(.*?)(?=\n[0-9]{8}$|\z)
↓
$1\t"$2"
(?m)(^[0-9]{8}$)\n(.*?)(?=\n[0-9]{8}$|\z)
↓
$1\t"$2"
2019/11/01(金) 14:05:57.48ID:zrbJp7o3
>>50
negative lookaheadとか書きつつ全然negativeじゃなかったわ
negative lookaheadとか書きつつ全然negativeじゃなかったわ
54デフォルトの名無しさん
2019/11/02(土) 07:00:29.25ID:Y+w4hll1 皆様ありがとうございます
最短一致と先読みを組み合わせて
(\d{8})((?:.*\n)*?)(?=\d{8})
のような感じでマッチしました
単に.*だけだと行末までで止まってしまうので明示的に.*\nの繰り返しと指定しないといけなかったようです
最短一致と先読みを組み合わせて
(\d{8})((?:.*\n)*?)(?=\d{8})
のような感じでマッチしました
単に.*だけだと行末までで止まってしまうので明示的に.*\nの繰り返しと指定しないといけなかったようです
2019/11/18(月) 01:09:59.81ID:B3FWH6HK
/(A|B*|C+|D?|E?|)+/ は /[A-E]*/ と同じなんだろうか。
2019/11/23(土) 19:09:02.72ID:S+7ZA2D+
=を含まない行を検索できる表現方法は?
2019/11/23(土) 21:06:16.66ID:8xX8HZu8
>>56
^[^=]*$
^[^=]*$
58デフォルトの名無しさん
2019/11/24(日) 19:30:30.97ID:BlMs70wA PCRE2 Version 10.34 21-November-2019
https://www.pcre.org/
https://www.pcre.org/
2019/12/07(土) 04:27:54.74ID:Dhp88CPz
今でもアクティブに更新してるのってPCREの他はre2と鬼車系くらいなのかな
昔はライブラリの話も結構してた気がするけど
昔はライブラリの話も結構してた気がするけど
2019/12/07(土) 11:10:24.58ID:hNCBwRLG
Hyperscan
2019/12/07(土) 19:19:38.35ID:S05zsHBk
テキストエディタで見えないけど何かがある状態
MacのBBEditだと逆さまの赤い「?」が表示される状態なんですけど
こういうのを正規表現で捕まえる事って出来ないですか?
MacのBBEditだと逆さまの赤い「?」が表示される状態なんですけど
こういうのを正規表現で捕まえる事って出来ないですか?
2019/12/07(土) 19:21:06.34ID:+kYKAjJc
否定で出来ない?
2019/12/07(土) 20:27:35.79ID:S05zsHBk
64デフォルトの名無しさん
2019/12/07(土) 20:32:56.16ID:tj55yZgB そういうときはバイナリエディタで開いて該当部の文字コード引きなよ。
2019/12/07(土) 20:51:47.44ID:S05zsHBk
ありがとうです
\x{7F}
でいけました
\x{7F}
でいけました
66デフォルトの名無しさん
2019/12/07(土) 21:19:40.77ID:b/g70Kck ウムラウトなどのアクセント付きアルファベットにのみ一致させる正規表現をお教えください。
2019/12/07(土) 21:54:33.96ID:hNCBwRLG
正規表現だけではまだできないんじゃないかな?
一般的には各言語が持ってるUnicodeの正規化機能を使って検索対象を基底文字+結合文字の形に正規化してから、結合文字を検索する
一般的には各言語が持ってるUnicodeの正規化機能を使って検索対象を基底文字+結合文字の形に正規化してから、結合文字を検索する
2019/12/07(土) 22:53:57.20ID:/3OJwFPr
日本語なら、NKF というライブラリがあるように、
ウムラウトなら、その国のライブラリがあるかも知れない
知らないけど
まあ、日本人に聞いても、ムダだと思うw
使っている国の人に、聞いた方がよい
ウムラウトなら、その国のライブラリがあるかも知れない
知らないけど
まあ、日本人に聞いても、ムダだと思うw
使っている国の人に、聞いた方がよい
2019/12/07(土) 23:41:45.44ID:FrJsgiML
cpanライブラリの中に一般的な正規表現集めたものがあるから
その中にあるかもね
その中にあるかもね
2019/12/08(日) 03:11:20.97ID:BNiynU8G
あるいは文字コードで標準ラテンのz(U+007A)よりあとを全て拾うように範囲指定するとか。
2019/12/08(日) 12:38:28.10ID:h14g0YSH
>>66
数は知れてるんだから普通に[ÄäÏï …]ってやればいいんじゃね?
数は知れてるんだから普通に[ÄäÏï …]ってやればいいんじゃね?
72デフォルトの名無しさん
2019/12/08(日) 14:00:42.26ID:0T/Za1/I サクラエディタの正規表現ライブラリbregonig with Onigmoの場合、大文字小文字区別なしでßや\x{00DF}がssにヒットするので困る。
2019/12/08(日) 14:15:46.03ID:B7mwO2xN
2019/12/08(日) 14:19:04.55ID:B7mwO2xN
2019/12/08(日) 17:17:16.59ID:qQWD6Mfj
[=a=]
equivalence class
equivalence class
2019/12/08(日) 17:27:54.65ID:DxA2hCcs
●Regular Expressionの使用環境
鬼雲6.2.0 &Mery
●検索か置換か?
検索
●説明
行中の1個目の=にだけマッチさせたい
意味合いとしては
(?<=^[^=\n]+)=
なんだけど
>戻り読みの式は固定文字長でなければならない。
>しかし、最上位の選択子だけは異なった文字長が許される。
だそうで+はダメみたい
(?<=^(?~=))=
戻り読みの中に非包含もダメだった
(?<=^[^=\n]|^[^=\n]{2}|^[^=\n]{3}| .... |^[^=\n]{1000})=
とかすれば無理矢理出来そうだけどもっとスマートな書き方無いかな?
鬼雲6.2.0 &Mery
●検索か置換か?
検索
●説明
行中の1個目の=にだけマッチさせたい
意味合いとしては
(?<=^[^=\n]+)=
なんだけど
>戻り読みの式は固定文字長でなければならない。
>しかし、最上位の選択子だけは異なった文字長が許される。
だそうで+はダメみたい
(?<=^(?~=))=
戻り読みの中に非包含もダメだった
(?<=^[^=\n]|^[^=\n]{2}|^[^=\n]{3}| .... |^[^=\n]{1000})=
とかすれば無理矢理出来そうだけどもっとスマートな書き方無いかな?
2019/12/08(日) 17:35:15.85ID:X/tkXkh9
^.*?\K=
2019/12/08(日) 17:45:34.12ID:DxA2hCcs
2019/12/08(日) 18:23:57.85ID:B7mwO2xN
>>75
それだとウムラウトついてないのも引っかかるよね
それだとウムラウトついてないのも引っかかるよね
2019/12/08(日) 22:21:07.36ID:DSHI20Cf
\K
いいなそれと思ったけど自分の環境では使えなかった残念
いいなそれと思ったけど自分の環境では使えなかった残念
2019/12/09(月) 17:04:00.86ID:o6YMciNa
>固定文字長で >最上位の選択子だけは異なった文字長
これはこういう意味かな
(?<=^[^=\n]{1,1000})=
これはこういう意味かな
(?<=^[^=\n]{1,1000})=
2019/12/09(月) 21:21:57.03ID:wMFl4+9a
鬼車のは (?<=ab|cd) だけじゃなく (?<=ab|cde) みたいなのも可ってことだったと思う
戻り読みを本当に後戻りしながらマッチングしてる実装ってほとんどなくて
大抵は文字列を一旦n文字分巻き戻して先読み相当の処理をするって感じになってるんで
パターンコンパイル時に「n文字分」が確定できない表現は弾かれる
戻り読みを本当に後戻りしながらマッチングしてる実装ってほとんどなくて
大抵は文字列を一旦n文字分巻き戻して先読み相当の処理をするって感じになってるんで
パターンコンパイル時に「n文字分」が確定できない表現は弾かれる
2019/12/11(水) 02:25:16.21ID:ue3GcKd8
グレップ坊や というソフト使ってますが
正規表現で、データだけ検索 データーを除外したい
どいう表記になりますか?
正規表現で、データだけ検索 データーを除外したい
どいう表記になりますか?
2019/12/11(水) 02:56:43.47ID:ivhCTlPt
データを表現する正規表現が基本
除外については反転オプションないの?
本家 grep には -v で反転する
除外については反転オプションないの?
本家 grep には -v で反転する
2019/12/11(水) 13:45:29.55ID:Jxz7JQeN
データ(?!ー)
データ(?=[^ー])
否定先読みか先読みが使えるならこれで出来る
独自のものだと適切なエスケープが必要かも
VB6ランタイム必要とあるからたぶんVBだろうけど
データ(?=[^ー])
否定先読みか先読みが使えるならこれで出来る
独自のものだと適切なエスケープが必要かも
VB6ランタイム必要とあるからたぶんVBだろうけど
8684
2019/12/14(土) 01:37:01.84ID:atjDTluR 下のほうで行けました
2020/01/02(木) 13:19:03.26ID:MApT2CVk
●Regular Expressionの使用環境
sed-4.7-x64.exe
(Gnu sed4.7のwindows版 https://github.com/mbuilov/sed-windows)
Windows 8.1(64)のPowerShellで実行
●検索か置換か?
置換(削除)
●説明
行頭から6文字目を削除して、行頭から2文字目の後に一文字挿入したい
●対象データ
1229日 1400
1230月 1500
1231火 1500
●希望する結果
12/29日1400
12/30月1500
12/31火1500
sed.exe -e "s/(?<=^.{5})\s//" .\ファイル.txt
としたら6文字目のスペースが削除されるかと思ったけどうまくいかない
ファイルはUTF-8で改行はCRLFです
sed-4.7-x64.exe
(Gnu sed4.7のwindows版 https://github.com/mbuilov/sed-windows)
Windows 8.1(64)のPowerShellで実行
●検索か置換か?
置換(削除)
●説明
行頭から6文字目を削除して、行頭から2文字目の後に一文字挿入したい
●対象データ
1229日 1400
1230月 1500
1231火 1500
●希望する結果
12/29日1400
12/30月1500
12/31火1500
sed.exe -e "s/(?<=^.{5})\s//" .\ファイル.txt
としたら6文字目のスペースが削除されるかと思ったけどうまくいかない
ファイルはUTF-8で改行はCRLFです
2020/01/02(木) 13:33:45.38ID:LqVuN/CI
2020/01/02(木) 13:48:39.30ID:MApT2CVk
何も削除されずに元のファイルがそのままです。
エラー表示等はないです。
エラー表示等はないです。
2020/01/02(木) 16:53:21.09ID:gZNl6+48
^(.{2})(.{3}).(.*)$
$1/$2$3
$1/$2$3
2020/01/02(木) 17:35:51.43ID:fx8yTANL
sed -i ?
2020/01/02(木) 18:35:38.12ID:gZNl6+48
sed -E "s/^(..)(...)\s(.*)/\1\/\2\3/" .\ファイル.txt
2020/01/13(月) 16:24:20.40ID:pG6qAwQV
●Regular Expressionの使用環境
正規表現の本・テキストで疑問に思った部分ですので特に環境は無いです
●対象データ
太郎はテニス部のキャプテンです。
太郎はサッカー部のキャプテンです。
太郎は野球部のキャプテンです。
太郎はバスケ部のキャプテンです。
●検索か置換か?
検索
●希望する結果
太郎はテニス部のキャプテンです。
太郎はサッカー部のキャプテンです。
太郎は野球部のキャプテンです。
●説明
通常の 太郎は(テニス|野球|サッカー)部のキャプテンです では無く
バスケ という単語を使い正規表現を作りたいのです
()を使った場合(使わなくても バスケ を用いた方法であれば良い)
の否定文・除くの書き方がわかりません
^ を使っってみましたが上手く行きませでした
太郎は(^バスケ)部のキャプテンです。 ・・ダメ
太郎は^(バスケ)部のキャプテンです。 ・・ダメ
太郎は(\^バスケ)部のキャプテンです。 ・・ダメ
バスケ を使った場合どの様に記述すれば良いのでしょうか?
正規表現の本・テキストで疑問に思った部分ですので特に環境は無いです
●対象データ
太郎はテニス部のキャプテンです。
太郎はサッカー部のキャプテンです。
太郎は野球部のキャプテンです。
太郎はバスケ部のキャプテンです。
●検索か置換か?
検索
●希望する結果
太郎はテニス部のキャプテンです。
太郎はサッカー部のキャプテンです。
太郎は野球部のキャプテンです。
●説明
通常の 太郎は(テニス|野球|サッカー)部のキャプテンです では無く
バスケ という単語を使い正規表現を作りたいのです
()を使った場合(使わなくても バスケ を用いた方法であれば良い)
の否定文・除くの書き方がわかりません
^ を使っってみましたが上手く行きませでした
太郎は(^バスケ)部のキャプテンです。 ・・ダメ
太郎は^(バスケ)部のキャプテンです。 ・・ダメ
太郎は(\^バスケ)部のキャプテンです。 ・・ダメ
バスケ を使った場合どの様に記述すれば良いのでしょうか?
2020/01/13(月) 16:54:41.37ID:omefpgVu
否定は、(?!文字列)
でも、太郎は(?!バスケ)部の、とは書けないよ
「太郎は」に続く「バスケでない任意の1文字以上の文字列」部のキャプテンという風に考えてみてくれ
でも、太郎は(?!バスケ)部の、とは書けないよ
「太郎は」に続く「バスケでない任意の1文字以上の文字列」部のキャプテンという風に考えてみてくれ
95デフォルトの名無しさん
2020/01/13(月) 17:05:50.06ID:KqHO+Fgo2020/01/13(月) 17:19:50.81ID:isx+DaHv
太郎は(?!バスケ).*部のキャプテンです。
太郎は(?!バスケ).*
(?!.*バスケ)太郎は.*部のキャプテンです。
(?!.*バスケ)太郎.*
(?!.*バスケ).*
太郎は(?!バスケ).*
(?!.*バスケ)太郎は.*部のキャプテンです。
(?!.*バスケ)太郎.*
(?!.*バスケ).*
2020/01/13(月) 17:32:26.06ID:isx+DaHv
鬼雲 非包含
^(?~バスケ|\n)$
^(?~バスケ|\n)$
2020/01/13(月) 18:15:40.74ID:pG6qAwQV
2020/01/13(月) 18:19:19.63ID:isx+DaHv
100デフォルトの名無しさん
2020/01/14(火) 22:34:44.82ID:kxfWTRop ^(?!.*バスケ)(?=.*キャプテン)(?=.*太郎).*
101デフォルトの名無しさん
2020/01/15(水) 00:24:06.58ID:qFZTgD7k 'あ'.match(/[あ゙い゙ゔえ゙お゙]/u)
(環境依存文字ですが、[]の中身は濁点つきの「あいうえお」です)
'あ'は濁点なしなのでマッチさせたくないのですがしてしまいます
これってマッチしないようにする方法はないですか?
JavaScriptです
(環境依存文字ですが、[]の中身は濁点つきの「あいうえお」です)
'あ'は濁点なしなのでマッチさせたくないのですがしてしまいます
これってマッチしないようにする方法はないですか?
JavaScriptです
102101
2020/01/15(水) 00:30:34.00ID:qFZTgD7k103デフォルトの名無しさん
2020/01/15(水) 12:08:15.81ID:lFvJ7mPZ ^(?!.*バスケ(?!ット(?!ボール(?!選手)))).*
バスケ ←不一致
バスケット ←一致
バスケットボール ←不一致
バスケットボール選手 ←一致
太郎はバスケットボール選手としてバスケ部に入部している ←不一致
太郎はバスケットボール選手としてバスケット部に入部している ←一致
バスケ ←不一致
バスケット ←一致
バスケットボール ←不一致
バスケットボール選手 ←一致
太郎はバスケットボール選手としてバスケ部に入部している ←不一致
太郎はバスケットボール選手としてバスケット部に入部している ←一致
104デフォルトの名無しさん
2020/01/15(水) 14:36:24.87ID:mWwHDwCD んなことよりバスケやろうぜ
105デフォルトの名無しさん
2020/02/09(日) 22:06:03.00ID:XBEo77KP マッチしたカッコ内の文字列をを利用する方法ってどうやるんでしたか?
http://hogehoge.jp
http://(.*).jp
このアスタリスクの部分を利用するのはどうやるんでしたかね
t1ではないです
http://hogehoge.jp
http://(.*).jp
このアスタリスクの部分を利用するのはどうやるんでしたかね
t1ではないです
106デフォルトの名無しさん
2020/02/09(日) 22:18:21.72ID:6++kPC7v107デフォルトの名無しさん
2020/02/09(日) 22:22:12.18ID:XBEo77KP $1ですねどうも
108デフォルトの名無しさん
2020/02/09(日) 22:34:23.16ID:XBEo77KP 同じ行にあるurlにhrefを加える正規表現はどうするのでしょうか
http://hoge1.jp http://hoge2.jp
↑これを
<a href="http://hoge1.jp">http://hoge1.jp</a> <a href="http://hoge2.jp">http://hoge2.jp</a>
こうしたいです
1つだけならこうできます
http://(.*).jp
http://hoge1.jp http://hoge2.jp
↑これを
<a href="http://hoge1.jp">http://hoge1.jp</a> <a href="http://hoge2.jp">http://hoge2.jp</a>
こうしたいです
1つだけならこうできます
http://(.*).jp
109デフォルトの名無しさん
2020/02/09(日) 22:34:49.85ID:XBEo77KP http://$1.jp
を忘れていました
を忘れていました
110デフォルトの名無しさん
2020/02/10(月) 14:37:14.41ID:8D13KkA5 正規表現よりも、HTML パーサーの方がよい。
Ruby のnokogiri で、HTML をパースすると、
require 'nokogiri'
doc = Nokogiri::HTML(<<EOT)
<html><body>
<a href="http://hoge1.jp">http://hoge1.jp</a>
<a href="http://hoge2.jp">http://hoge2.jp</a>
</body></html>
EOT
elements = doc.css( "a" )
# 属性・テキスト
elements.each { |elem| puts elem.get_attribute( "href" ), elem.text }
出力
http://hoge1.jp
http://hoge1.jp
http://hoge2.jp
http://hoge2.jp
Ruby のnokogiri で、HTML をパースすると、
require 'nokogiri'
doc = Nokogiri::HTML(<<EOT)
<html><body>
<a href="http://hoge1.jp">http://hoge1.jp</a>
<a href="http://hoge2.jp">http://hoge2.jp</a>
</body></html>
EOT
elements = doc.css( "a" )
# 属性・テキスト
elements.each { |elem| puts elem.get_attribute( "href" ), elem.text }
出力
http://hoge1.jp
http://hoge1.jp
http://hoge2.jp
http://hoge2.jp
111デフォルトの名無しさん
2020/02/10(月) 18:02:57.53ID:cKG4UD69112デフォルトの名無しさん
2020/02/11(火) 07:15:58.31ID:Kcy+Q8b9 >>108
.jpが末尾につく行がリンクだと仮定してjavascript
/^(.+\.jp)$/gm
上記の正規表現で
<a hef=“http://$1”>http://$1</a>
正規表現のフラグのmで複数行対応、gで複数の結果で対応出来ん?
.jpが末尾につく行がリンクだと仮定してjavascript
/^(.+\.jp)$/gm
上記の正規表現で
<a hef=“http://$1”>http://$1</a>
正規表現のフラグのmで複数行対応、gで複数の結果で対応出来ん?
113デフォルトの名無しさん
2020/02/11(火) 13:30:47.89ID:yXLnwJ70 (https?://\S+)
<a href=“\1”>\1</a>
<a href=“\1”>\1</a>
114デフォルトの名無しさん
2020/02/12(水) 09:21:48.77ID:iIu6BAwU 1) (hoge)
2) (hoge, fuga)
3) (hoge, fuga, piyo)
2) のみにマッチする正規表現のご教示よろしくお願いいたします
鬼雲
2) (hoge, fuga)
3) (hoge, fuga, piyo)
2) のみにマッチする正規表現のご教示よろしくお願いいたします
鬼雲
115デフォルトの名無しさん
2020/02/12(水) 10:28:49.15ID:bUEb5r3d hogeとfugaを後で使うと仮定して
\((.+),(.+)\)
\((.+),(.+)\)
116デフォルトの名無しさん
2020/02/12(水) 10:51:06.48ID:NK/UnlDo >>115
それだと3)にもマッチするよ
それだと3)にもマッチするよ
117デフォルトの名無しさん
2020/02/12(水) 11:05:14.78ID:W9U9giTl >>114
a\)
a\)
118デフォルトの名無しさん
2020/02/12(水) 15:06:59.76ID:bUEb5r3d .を[^,]でどう?
119デフォルトの名無しさん
2020/02/12(水) 15:37:27.75ID:iIu6BAwU ID:bUEb5r3d 様
ありがとうございました。m(_ _)m
「\([^,]*,[^,]*?\)」で希望動作になりました
ありがとうございました。m(_ _)m
「\([^,]*,[^,]*?\)」で希望動作になりました
120デフォルトの名無しさん
2020/02/12(水) 18:44:57.81ID:bUEb5r3d どういたしまして。
ちなみに+じゃなくて*にしてるのは
(,)
にも一致させたいという事?
あと?は無くても動かん?
ちなみに+じゃなくて*にしてるのは
(,)
にも一致させたいという事?
あと?は無くても動かん?
121デフォルトの名無しさん
2020/02/12(水) 18:51:28.08ID:gdzQpnag [^,]*だと改行と閉じ括弧を含んでしまい
次の行まで選択してしまうのでは?
次の行まで選択してしまうのでは?
122デフォルトの名無しさん
2020/02/12(水) 19:37:56.96ID:bUEb5r3d 確かにこんなデータも想定するとアウトやね
((hoge,huga)piyo)
改行はオプション次第だね
((hoge,huga)piyo)
改行はオプション次第だね
123デフォルトの名無しさん
2020/02/18(火) 23:17:54.25ID:TkHg8SjE 指定した2つの文字XYの間がn文字以下(0を含む)にマッチする検索方法教えてください
マッチ例n=3
XY
XaY
XabcY
NG
XabcdY
マッチ例n=3
XY
XaY
XabcY
NG
XabcdY
124デフォルトの名無しさん
2020/02/18(火) 23:50:11.22ID:rgk/DkAY X.{0,3}Y
とかかな、試してないけど
とかかな、試してないけど
125デフォルトの名無しさん
2020/02/19(水) 00:18:10.76ID:Y6/DCNeg >>124
ありがとうございます
ありがとうございます
126デフォルトの名無しさん
2020/02/24(月) 14:31:40.12ID:iLDNrypx ●Regular Expressionの使用環境
実際に使う環境は不明ですが、まずはサクラエディタで試そうと思います。
●検索か置換か?
検索。マッチ部分を抽出できる必要はなく、含むかだけわかれば良いです。
●説明
文章(サクラは複数行NGとのことなので、今は1行)の中に「市」という文字が入っているかを判定したいです。
しかし、「横浜市」のような地名が入っているかを判定したいので、「巨大都市」「姉妹都市」のような特定のワードは排除したいです。
>>103の前後が逆のパターンになると思うのですが、単純に「^(?!.*(?!(?!巨大都|姉妹都)市)).*」とすると何もマッチしなくなってしまいます。
(そもそも「^(?!.*(?!ット(?!ボール))).*」の時点で「バスケット」にマッチしません)
●対象データ・希望する結果
ここは巨大都市だ
(マッチなし)
ここは横浜市だ
^
ここは巨大都市の横浜市だ
^
実際に使う環境は不明ですが、まずはサクラエディタで試そうと思います。
●検索か置換か?
検索。マッチ部分を抽出できる必要はなく、含むかだけわかれば良いです。
●説明
文章(サクラは複数行NGとのことなので、今は1行)の中に「市」という文字が入っているかを判定したいです。
しかし、「横浜市」のような地名が入っているかを判定したいので、「巨大都市」「姉妹都市」のような特定のワードは排除したいです。
>>103の前後が逆のパターンになると思うのですが、単純に「^(?!.*(?!(?!巨大都|姉妹都)市)).*」とすると何もマッチしなくなってしまいます。
(そもそも「^(?!.*(?!ット(?!ボール))).*」の時点で「バスケット」にマッチしません)
●対象データ・希望する結果
ここは巨大都市だ
(マッチなし)
ここは横浜市だ
^
ここは巨大都市の横浜市だ
^
127デフォルトの名無しさん
2020/02/24(月) 14:48:12.43ID:iQYTd9Fe129デフォルトの名無しさん
2020/03/21(土) 15:01:32.98ID:Ycs9n4/m どなたか教えてください。0が含まれる行のみ/以降を削除したいです。
(処理前)
2/3004
67//1
503/11/4
4/6/978
(処理後)
2
67//1
503
4/6/978
実際の文字列は数字とは限りません。可能かわかりませんがどうぞお願いします。
(処理前)
2/3004
67//1
503/11/4
4/6/978
(処理後)
2
67//1
503
4/6/978
実際の文字列は数字とは限りません。可能かわかりませんがどうぞお願いします。
130デフォルトの名無しさん
2020/03/21(土) 16:32:31.37ID:S0XSDbOV >>129
使用環境も書きましょう。
プログラミング言語かテキストエディタかでも大分違ってきますし。
スルーされにくい質問のテンプレと例
●Regular Expressionの使用環境
Java1.5
●検索か置換か?
検索
●説明
各行の1番目のAまでを検索したい
●対象データ
ABCA
BCAA
CABA
●希望する結果
ABCA
^
BCAA
^^^
CABA
^^
※ ^ はアンダーラインだそうな ^^;
使用環境も書きましょう。
プログラミング言語かテキストエディタかでも大分違ってきますし。
スルーされにくい質問のテンプレと例
●Regular Expressionの使用環境
Java1.5
●検索か置換か?
検索
●説明
各行の1番目のAまでを検索したい
●対象データ
ABCA
BCAA
CABA
●希望する結果
ABCA
^
BCAA
^^^
CABA
^^
※ ^ はアンダーラインだそうな ^^;
131デフォルトの名無しさん
2020/03/21(土) 16:58:05.15ID:iWBNd/W/ ^(?=.*0)([^/]*).*$
\1
\1
132デフォルトの名無しさん
2020/03/21(土) 18:17:29.30ID:Ycs9n4/m133デフォルトの名無しさん
2020/03/22(日) 11:16:42.62ID:nQo0XPUd ●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
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
134デフォルトの名無しさん
2020/03/22(日) 11:49:39.63ID:feI8vnc9 0000などは連番扱いされないの?
135デフォルトの名無しさん
2020/03/22(日) 11:55:19.77ID:zGmYOqdI136デフォルトの名無しさん
2020/03/22(日) 12:16:09.69ID:loDgnmn0 ファイル名の最後の数字部分だけ取りたいなら (\d+).jpg とかじゃ駄目なん?
137デフォルトの名無しさん
2020/03/22(日) 12:33:09.14ID:zGmYOqdI >>133
そもそも :^isDigit: の前に .*は必要?
そもそも :^isDigit: の前に .*は必要?
138デフォルトの名無しさん
2020/03/22(日) 12:39:04.69ID:nQo0XPUd139デフォルトの名無しさん
2020/03/22(日) 12:41:01.29ID:nQo0XPUd >>136
試しましたがマッチしません
試しましたがマッチしません
140デフォルトの名無しさん
2020/03/22(日) 12:43:52.41ID:nQo0XPUd 書き忘れましたが
ファイル名だけでなくファイルパスを含む場合があります・・
ex.
/a/b/c/d/_0000_1111_2222_3333.jpg
3333.jpgのようなパターンさえなければ対応できているのですが
これが来た場合にうまくいきません
ファイル名だけでなくファイルパスを含む場合があります・・
ex.
/a/b/c/d/_0000_1111_2222_3333.jpg
3333.jpgのようなパターンさえなければ対応できているのですが
これが来た場合にうまくいきません
141デフォルトの名無しさん
2020/03/22(日) 13:22:29.93ID:ilL19jCu142デフォルトの名無しさん
2020/03/22(日) 13:27:20.03ID:nQo0XPUd >>141
エスケープ付けてテストしてあります
エスケープ付けてテストしてあります
143デフォルトの名無しさん
2020/03/22(日) 13:29:10.24ID:aG3rJm5+ >>140
(/a/b/c/d/_0000_1111_2222_)?3333.jpg
(/a/b/c/d/_0000_1111_2222_)?3333.jpg
144デフォルトの名無しさん
2020/03/22(日) 13:33:55.99ID:nQo0XPUd >>143
マッチします
マッチします
145デフォルトの名無しさん
2020/03/22(日) 13:53:17.55ID:7GTLasBi146デフォルトの名無しさん
2020/03/22(日) 14:25:12.02ID:HpFFHFhU JavaScript なら、これで一致するので、
キャプチャー部分だけを取り出す
var re = /(\d+)\.jpg/g;
キャプチャー部分だけを取り出す
var re = /(\d+)\.jpg/g;
147デフォルトの名無しさん
2020/03/22(日) 14:31:11.47ID:loDgnmn0 文字列の先頭からしかマッチできないんなら .*(\d+).jpg でいいんじゃね
ルールがローカルすぎてよくわからんが
ルールがローカルすぎてよくわからんが
148デフォルトの名無しさん
2020/03/22(日) 14:42:52.35ID:I5Su+SV6149デフォルトの名無しさん
2020/03/22(日) 14:50:15.15ID:loDgnmn0 (.*[^\d])?(\d+)\.jpg
150デフォルトの名無しさん
2020/03/22(日) 15:07:09.29ID:nQo0XPUd151デフォルトの名無しさん
2020/03/22(日) 15:21:27.08ID:H4vT0xhv (.*[^\d])?(\d+)\.jpe?g
\2
\2
152デフォルトの名無しさん
2020/03/22(日) 15:30:56.06ID:nQo0XPUd 一通り検査して全てパスできました
皆様ありがとうございました
それにしてもうまい方法があるものですね勉強になります・・
皆様ありがとうございました
それにしてもうまい方法があるものですね勉強になります・・
153デフォルトの名無しさん
2020/03/22(日) 21:42:28.57ID:hAKSIWAv >>133を見て何が何だかだわ
皆さんスゲーな
皆さんスゲーな
154デフォルトの名無しさん
2020/03/23(月) 07:21:58.66ID:jGS2rL5b VSCode なら、Regex Previewer という拡張機能がある
JavaScript, PHP の正規表現をテストできる
JavaScript, PHP の正規表現をテストできる
155デフォルトの名無しさん
2020/04/09(木) 01:23:43.84ID:o0bB5yvE 正規表現の段位、級位みたい試験があると転職に役立つかな
正規表現3段所持みたいな
試験問題はほとんどパズルだな
当方は頭悪いので、複数の単純な正規表現使用派
正規表現3段所持みたいな
試験問題はほとんどパズルだな
当方は頭悪いので、複数の単純な正規表現使用派
156デフォルトの名無しさん
2020/04/09(木) 14:34:47.92ID:67/p/Sga 正規表現必須!てな現場もそうそう無いだろうし
使えて当たり前、だけど高度過ぎる常人に思い付けないようなものが必要になる場面もまず無いだろうし
そうなったら出来る奴に丸投げすりゃいいし
プログラム内なら全て正規表現任せにせずに前処理した方が良いケースも多々あるからそれ絡めてのスキルだと思うし
方言が多い事や解が複数あり得る事も試験化には問題
マークシート選択方式では引っ掛け問題ばかりになるだろうし何か違う気がする
資格化したところで精々、文系脳の奴がどれだけ論理思考が出来るか?の目安とか雑なIQ判定くらいにしか役立ちそうにない
義務教育内でこんなのあるよ程度に最低限くらいは教えておいて欲しいけど資格化までは疑問かな
使えて当たり前、だけど高度過ぎる常人に思い付けないようなものが必要になる場面もまず無いだろうし
そうなったら出来る奴に丸投げすりゃいいし
プログラム内なら全て正規表現任せにせずに前処理した方が良いケースも多々あるからそれ絡めてのスキルだと思うし
方言が多い事や解が複数あり得る事も試験化には問題
マークシート選択方式では引っ掛け問題ばかりになるだろうし何か違う気がする
資格化したところで精々、文系脳の奴がどれだけ論理思考が出来るか?の目安とか雑なIQ判定くらいにしか役立ちそうにない
義務教育内でこんなのあるよ程度に最低限くらいは教えておいて欲しいけど資格化までは疑問かな
157デフォルトの名無しさん
2020/04/09(木) 18:11:21.90ID:AINw40ik >>156
君は正規表現の前に日本語の義務教育受けてこいw
君は正規表現の前に日本語の義務教育受けてこいw
158デフォルトの名無しさん
2020/04/09(木) 21:20:08.08ID:HMI1Vo9o 日本語力に特段問題があるようには見えないが
159デフォルトの名無しさん
2020/04/09(木) 21:34:35.21ID:+PEAWxOJ 俺もちゃんと何言ってるのか分かったし、特に読んでて疑問も覚えなかったね
160デフォルトの名無しさん
2020/04/09(木) 22:20:15.44ID:zOdaCiQO 文章がくどいとは思う
161デフォルトの名無しさん
2020/04/09(木) 22:26:46.58ID:BSAQTOUE 難題を解決したらあいつスゲーなとなるけど
なかなかその機会が訪れないよな
なかなかその機会が訪れないよな
162デフォルトの名無しさん
2020/04/09(木) 23:07:21.92ID:+PEAWxOJ >>160
くどいというより接続詞で繋げすぎだね
くどいというより接続詞で繋げすぎだね
163デフォルトの名無しさん
2020/04/10(金) 05:35:38.69ID:OHa28c9H 論文とかの文章ならどうかと思うけど
こういう掲示板での改行の仕方とか含めての表現では
別に問題ないよなと思った
こういう掲示板での改行の仕方とか含めての表現では
別に問題ないよなと思った
164デフォルトの名無しさん
2020/04/10(金) 07:01:05.28ID:ZlkuoHXS 義務教育やり直せレベルにはみえない
雑文としては意味が通じないような文では無いだろう
157の日本語力が低杉なんじゃ?
雑文としては意味が通じないような文では無いだろう
157の日本語力が低杉なんじゃ?
165デフォルトの名無しさん
2020/04/10(金) 08:59:24.36ID:sn6MPl7m >>161
パズルとしてはいいけど業務でやられると保守できなくなるしな
パズルとしてはいいけど業務でやられると保守できなくなるしな
166デフォルトの名無しさん
2020/04/10(金) 09:02:57.81ID:sn6MPl7m >>157フルボッコw
最初の方で「~し」を多用してるのがちょいウザいけど内容的にはまあ頷けるわな
最初の方で「~し」を多用してるのがちょいウザいけど内容的にはまあ頷けるわな
167デフォルトの名無しさん
2020/04/10(金) 11:44:30.56ID:BcRc61MP168デフォルトの名無しさん
2020/04/10(金) 14:42:19.38ID:k/YdHOe5 そもそも問題が複雑だから複雑な正規表現になってしまうのでは?
そういう場合はそいつじゃないとできないという状況になってしまうこともありうる
そういう場合はそいつじゃないとできないという状況になってしまうこともありうる
169デフォルトの名無しさん
2020/04/10(金) 15:00:43.02ID:71OQfeOs うん、そういう場合もあると思うけど
多くの人はそもそも正規表現で解決出来るかもという発想がなくて
手間と時間をかけて頑張るか、その仕事を断る
そんな場合が多い気がする
多くの人はそもそも正規表現で解決出来るかもという発想がなくて
手間と時間をかけて頑張るか、その仕事を断る
そんな場合が多い気がする
170デフォルトの名無しさん
2020/04/10(金) 15:25:33.75ID:BcRc61MP まあbison/flex使って片付けてたらそれはやめてくれとも言われたこともあるしな
引き継げないだろと
引き継げないだろと
171デフォルトの名無しさん
2020/04/10(金) 16:34:01.15ID:sn6MPl7m172デフォルトの名無しさん
2020/04/10(金) 23:03:46.23ID:ALVzSQYS 頑張りすぎちゃって誰もメンテできないような手に負えないSQLってたまに出くわすけど、
それと同じような要領で頑張りすぎちゃって誰もメンテできないような正規表現が出てきたら・・・・
自分だったらSQLのときよりもさらに全力で逃げ出すかなあ
正規表現ってただでさえ魔法のような暗号文化しがちだし(後で読解に困ることも多いし)
仕様を簡潔明瞭にコードに落とし込むスキルがないダメプログラマが
力技で正規表現ゴリゴリ書くことを考えるとかなりの恐怖
エスアイアーの現場ならむしろ安全のため正規表現全面禁止にしておくほうがマシなんじゃなかろうか
それと同じような要領で頑張りすぎちゃって誰もメンテできないような正規表現が出てきたら・・・・
自分だったらSQLのときよりもさらに全力で逃げ出すかなあ
正規表現ってただでさえ魔法のような暗号文化しがちだし(後で読解に困ることも多いし)
仕様を簡潔明瞭にコードに落とし込むスキルがないダメプログラマが
力技で正規表現ゴリゴリ書くことを考えるとかなりの恐怖
エスアイアーの現場ならむしろ安全のため正規表現全面禁止にしておくほうがマシなんじゃなかろうか
173デフォルトの名無しさん
2020/04/11(土) 00:23:01.95ID:yLiBv2Sb 三項演算子でも同じ問題あるね
可読性と簡潔性は必ずしも両立しない
可読性と簡潔性は必ずしも両立しない
174デフォルトの名無しさん
2020/04/11(土) 00:37:32.49ID:aIl7Qg1V 仕様がわかっていれば
ちゃんとしたドキュメントが残っていれば何とでもなる
暗号をわかりやすいプログラムに変換可能だから
とりあえず動いているので触りたくないというのどうにもならない
それはそのプログラムが近い将来破綻することを意味する
ちゃんとしたドキュメントが残っていれば何とでもなる
暗号をわかりやすいプログラムに変換可能だから
とりあえず動いているので触りたくないというのどうにもならない
それはそのプログラムが近い将来破綻することを意味する
175デフォルトの名無しさん
2020/04/11(土) 01:03:41.61ID:Ni1vKiQd176デフォルトの名無しさん
2020/04/11(土) 05:53:16.03ID:qQ/s2VQN >>175
あーあーそれはなんか分かる・しっくり来るな。完全同意だわ。
あーあーそれはなんか分かる・しっくり来るな。完全同意だわ。
177デフォルトの名無しさん
2020/04/11(土) 09:32:41.81ID:Qk2+GLy8 >>175
でもそれって正規表現使っているか否かに関わらず本来なされているべきことだよね
正規表現とか特定の機能を使ってるところだけ特別扱いしてドキュメントやテスト仕様を残させるとか
絶対サボる人が出てきそう
でもってサボったところに限って誰も直せないようなクソコードと化すパターン
でもそれって正規表現使っているか否かに関わらず本来なされているべきことだよね
正規表現とか特定の機能を使ってるところだけ特別扱いしてドキュメントやテスト仕様を残させるとか
絶対サボる人が出てきそう
でもってサボったところに限って誰も直せないようなクソコードと化すパターン
178デフォルトの名無しさん
2020/04/11(土) 16:30:10.27ID:Ni1vKiQd >>177
仕様の分かるテストケースってのはテストコードのことね
正規表現は作る時に必ずマッチする例とマッチしない例を書いて確認するでしょ?
それを仕様の分かるテストコードにしてセットで扱えるようにしておくってこと
コードレビュー時も正規表現だけ見てレビューしても効果薄いから
テストコードとセットでレビューする
>でもそれって正規表現使っているか否かに関わらず本来なされているべきことだよね
これはそうでもないよ
複雑なSQLの場合は仕様の分かるテストコードを一式用意するのは結構難しくて
ある範囲を超えると手間に見合わないから仕様書とSQL自体のレビューだったり手動テストで補完する
正規表現は純粋関数として扱えるのでその辺の難しさがない
仕様の分かるテストケースってのはテストコードのことね
正規表現は作る時に必ずマッチする例とマッチしない例を書いて確認するでしょ?
それを仕様の分かるテストコードにしてセットで扱えるようにしておくってこと
コードレビュー時も正規表現だけ見てレビューしても効果薄いから
テストコードとセットでレビューする
>でもそれって正規表現使っているか否かに関わらず本来なされているべきことだよね
これはそうでもないよ
複雑なSQLの場合は仕様の分かるテストコードを一式用意するのは結構難しくて
ある範囲を超えると手間に見合わないから仕様書とSQL自体のレビューだったり手動テストで補完する
正規表現は純粋関数として扱えるのでその辺の難しさがない
179デフォルトの名無しさん
2020/04/14(火) 11:27:53.60ID:uSEs8eKP 足並み揃えないと不安で死んじゃう病
180デフォルトの名無しさん
2020/04/14(火) 11:37:16.46ID:ARaCq1kB 人っていついなくなるかわからないからね
事故だったり勝手な理由で辞めたり
事故だったり勝手な理由で辞めたり
181デフォルトの名無しさん
2020/04/15(水) 10:44:15.36ID:MMPwOLF/ ●Regular Expressionの使用環境
grep (GNU grep) 2.20
●検索か置換か?
検索
●説明
今日から、14日間(位)を抜き出したい。
●対象データ
(前にもたくさん)
2020-03-14
2020-03-14
2020-03-15
2020-03-15
(中略)
2020-04-14
2020-04-14
2020-04-15
2020-04-15
(後も続く)
●希望する結果
14日前から2020-04-15を抽出できる事を希望します。
元ファイルに存在しない日付(3月33日があったり・・)などは無く、書式も必ず対象データに記載のもので出力されます。
また、30の月、31の月なども考慮しないでOKです。(できる限りシンプルな書式でお示しください)
サンプルお示しいただけたら、あとはググりながら自分で調べます。
ググったのですが、サンプルになるいい感じのシンプルな書式が見当たらず
どうにもうまく正規表現を作れずにおります。何卒宜しくお願い致します。
grep (GNU grep) 2.20
●検索か置換か?
検索
●説明
今日から、14日間(位)を抜き出したい。
●対象データ
(前にもたくさん)
2020-03-14
2020-03-14
2020-03-15
2020-03-15
(中略)
2020-04-14
2020-04-14
2020-04-15
2020-04-15
(後も続く)
●希望する結果
14日前から2020-04-15を抽出できる事を希望します。
元ファイルに存在しない日付(3月33日があったり・・)などは無く、書式も必ず対象データに記載のもので出力されます。
また、30の月、31の月なども考慮しないでOKです。(できる限りシンプルな書式でお示しください)
サンプルお示しいただけたら、あとはググりながら自分で調べます。
ググったのですが、サンプルになるいい感じのシンプルな書式が見当たらず
どうにもうまく正規表現を作れずにおります。何卒宜しくお願い致します。
182デフォルトの名無しさん
2020/04/15(水) 11:13:15.42ID:ajU4Q4+G カレンダーは西向く侍があるから正規表現単独では無理では……
183デフォルトの名無しさん
2020/04/15(水) 11:16:23.86ID:oU4wEPk/184デフォルトの名無しさん
2020/04/15(水) 11:19:34.98ID:MMPwOLF/ >>182
大体でもできないでしょうか。
と書こうと思ったときに思いつきました。。。
実行速度に問題が出るかもしれませんが、
3月15日または、3月16日または、3月17日または・・・4月15日。
って力技でやってみます・・・。
もし、ほかにも「こういう方法があるよ」って素敵なアイデアお持ちのかた
いらっしゃいましたら、ぜひレスをください。宜しくお願い致します。
大体でもできないでしょうか。
と書こうと思ったときに思いつきました。。。
実行速度に問題が出るかもしれませんが、
3月15日または、3月16日または、3月17日または・・・4月15日。
って力技でやってみます・・・。
もし、ほかにも「こういう方法があるよ」って素敵なアイデアお持ちのかた
いらっしゃいましたら、ぜひレスをください。宜しくお願い致します。
185デフォルトの名無しさん
2020/04/15(水) 11:29:40.68ID:oU4wEPk/186デフォルトの名無しさん
2020/04/15(水) 11:31:48.22ID:MMPwOLF/187デフォルトの名無しさん
2020/04/15(水) 11:48:04.80ID:oU4wEPk/188デフォルトの名無しさん
2020/04/15(水) 11:49:07.49ID:MMPwOLF/ >>183
ありがとうございます。
scriptというのが大きなヒントになり解決に至りました。
結果的にはこれでできました。
cat 対象ログファイル | awk '"2020-04-01" <= $2 && $2 < "2020-04-02"'
性器表現ばっかりにとらわれてました・・
ありがとうございます。
ありがとうございます。
scriptというのが大きなヒントになり解決に至りました。
結果的にはこれでできました。
cat 対象ログファイル | awk '"2020-04-01" <= $2 && $2 < "2020-04-02"'
性器表現ばっかりにとらわれてました・・
ありがとうございます。
189デフォルトの名無しさん
2020/04/15(水) 13:19:12.50ID:Ut6Mn670 何を言いたいのかエスパーでもわからん
オーダーはもっと正確に
オーダーはもっと正確に
190デフォルトの名無しさん
2020/04/15(水) 16:37:41.08ID:h/7T7n1i >>181
ちょっとだけややこしい検索にはawkがおすすめ
ちょっとだけややこしい検索にはawkがおすすめ
191デフォルトの名無しさん
2020/04/15(水) 16:53:34.03ID:z6xNdPvI 性器表現って(i)みたいなのだろw
192デフォルトの名無しさん
2020/04/21(火) 11:40:37.33ID:3ZBp0+Pn ●Regular Expressionの使用環境
サクラエディタ
●検索か置換か?
置き換え
●説明
pingの結果(成功)をtxtに収めたものから、
IPアドレスだけ抜き取りたい
●対象データ
Echo reply 1 from 192.168.0.1 time delay 99.999 ms
Echo reply 2 from 192.168.0.1 time delay 88.999 ms
Echo reply 1 from 192.168.0.2 time delay 88.999 ms
Echo reply 2 from 192.168.0.2 time delay 88.999 ms
以下同じように続く
●希望する結果
192.168.0.1
192.168.0.1
192.168.0.2
192.168.0.2
〇実際に得られた結果
2.168.0.1
2.168.0.1
2.168.0.2
2.168.0.2
よろしくお願いいたします。
サクラエディタ
●検索か置換か?
置き換え
●説明
pingの結果(成功)をtxtに収めたものから、
IPアドレスだけ抜き取りたい
●対象データ
Echo reply 1 from 192.168.0.1 time delay 99.999 ms
Echo reply 2 from 192.168.0.1 time delay 88.999 ms
Echo reply 1 from 192.168.0.2 time delay 88.999 ms
Echo reply 2 from 192.168.0.2 time delay 88.999 ms
以下同じように続く
●希望する結果
192.168.0.1
192.168.0.1
192.168.0.2
192.168.0.2
〇実際に得られた結果
2.168.0.1
2.168.0.1
2.168.0.2
2.168.0.2
よろしくお願いいたします。
193デフォルトの名無しさん
2020/04/21(火) 11:41:25.90ID:3ZBp0+Pn 〇使用した正規表現(置換)
.*((([0-9]{1,3}\.){3})[0-9]{1,3}).*
$1
が抜けてました
.*((([0-9]{1,3}\.){3})[0-9]{1,3}).*
$1
が抜けてました
194デフォルトの名無しさん
2020/04/21(火) 12:43:11.20ID:iVBBDkGx 今の奴を少し手直しして
.*\b(([0-9]{1,3}\.){3}[0-9]{1,3}).*
とか
.* (([0-9]{1,3}\.){3}[0-9]{1,3}).*
必ずfrom〜timeに挟まれるなら
.*from ([\d.]*) time.*
とか
.*\b(([0-9]{1,3}\.){3}[0-9]{1,3}).*
とか
.* (([0-9]{1,3}\.){3}[0-9]{1,3}).*
必ずfrom〜timeに挟まれるなら
.*from ([\d.]*) time.*
とか
195デフォルトの名無しさん
2020/04/21(火) 13:08:13.53ID:bjfyOojV196デフォルトの名無しさん
2020/04/21(火) 13:34:44.69ID:3ZBp0+Pn197デフォルトの名無しさん
2020/04/21(火) 22:38:03.26ID:alPdontK .* を [^0-9]* もしくは \D*
198デフォルトの名無しさん
2020/04/21(火) 23:03:33.07ID:J0u+GdjC 推奨はしないけど、元の奴で、.*に?を追加して
.*?((([0-9]{1,3}\.){3})[0-9]{1,3}).*
.*?((([0-9]{1,3}\.){3})[0-9]{1,3}).*
199デフォルトの名無しさん
2020/05/16(土) 15:22:19.43ID:hjibA7SH ランダムな文字列によるコピペ荒らしで
12文字中の文字が最大で6種類しかない
ようなときどうすればいいでしょうか?
(.)\1*([^\1])\2*([^\1\2])\3*([^\1\2\3])\4*([^\1\2\3\4])\5*(
[^\1\2\3\4\5])\6 (.)\1*([^\1])\2*([^\1\2])\3*([^\1\2\3])\4*([^\1\2\3\4])\5*(
[^\1\2\3\4\5])\6*[\1\2\3\4\5\6]{6,}
こんな風にすると新たな種類の文字がキャプチャされていくように思えますが
既に登場した文字が再び登場するとマッチしなくなります
12文字中の文字が最大で6種類しかない
ようなときどうすればいいでしょうか?
(.)\1*([^\1])\2*([^\1\2])\3*([^\1\2\3])\4*([^\1\2\3\4])\5*(
[^\1\2\3\4\5])\6 (.)\1*([^\1])\2*([^\1\2])\3*([^\1\2\3])\4*([^\1\2\3\4])\5*(
[^\1\2\3\4\5])\6*[\1\2\3\4\5\6]{6,}
こんな風にすると新たな種類の文字がキャプチャされていくように思えますが
既に登場した文字が再び登場するとマッチしなくなります
200デフォルトの名無しさん
2020/05/16(土) 15:33:21.77ID:hjibA7SH 例を挙げると
↓慮↓鸞↑↓↓→慮↑←←↑→↑鸞↑→←→艪慮慮↑鸞鸞慮慮艪艪鸞→→↑慮↓→↓↓↑
慮鸞鸞艪艪→慮鸞艪鸞鸞↑慮艪慮艪慮↑←慮↑↑慮↑←艪→←鸞↑↓↑↑↓艪↓鸞慮→→
→艪←艪←↓↓←艪←↑→←←←鸞↓↓艪↑鸞←鸞←↓慮鸞←慮←慮↓慮慮慮慮↓↑艪
こんな感じの荒らしです
文字は毎回ランダムで変わります
登場する文字の種類が少ないという点でマッチさせたいと思っています
↓慮↓鸞↑↓↓→慮↑←←↑→↑鸞↑→←→艪慮慮↑鸞鸞慮慮艪艪鸞→→↑慮↓→↓↓↑
慮鸞鸞艪艪→慮鸞艪鸞鸞↑慮艪慮艪慮↑←慮↑↑慮↑←艪→←鸞↑↓↑↑↓艪↓鸞慮→→
→艪←艪←↓↓←艪←↑→←←←鸞↓↓艪↑鸞←鸞←↓慮鸞←慮←慮↓慮慮慮慮↓↑艪
こんな感じの荒らしです
文字は毎回ランダムで変わります
登場する文字の種類が少ないという点でマッチさせたいと思っています
201デフォルトの名無しさん
2020/05/16(土) 15:34:13.39ID:C+uyEXd2 (.)\1*([^\1])[\1\2]*([^\1\2])[\1\2\3]*([^\1\2\3])[\1\2\3\4]*([^\1\2\3\4])[\1\2\3\4\5]*
こんな感じ?
こんな感じ?
202デフォルトの名無しさん
2020/05/16(土) 19:45:32.29ID:hjibA7SH >>201
試したらそれだとほぼ全ての文章にも当てはまるみたいです
試したらそれだとほぼ全ての文章にも当てはまるみたいです
203デフォルトの名無しさん
2020/05/16(土) 20:00:27.44ID:C+uyEXd2 ^(.)+(?!\1)(.)(?:\1|\2)*(?!\1|\2)(.)(?:\1|\2|\3)*(?!\1|\2|\3)(.)(?:\1|\2|\3|\4)*
文字クラス中で後方参照使えないなら否定先読みで代替
文字クラス中で後方参照使えないなら否定先読みで代替
204デフォルトの名無しさん
2020/05/16(土) 20:04:12.78ID:C+uyEXd2 訂正
試してなかった
^(.)\1*(?!\1)(.)(?:\1|\2)*(?!\1|\2)(.)(?:\1|\2|\3)*(?!\1|\2|\3)(.)(?:\1|\2|\3|\4)*
試してなかった
^(.)\1*(?!\1)(.)(?:\1|\2)*(?!\1|\2)(.)(?:\1|\2|\3)*(?!\1|\2|\3)(.)(?:\1|\2|\3|\4)*
205デフォルトの名無しさん
2020/05/16(土) 20:19:48.01ID:vPXPesfb 無理だと思ったけどなんかできたわ
6種類以下の文字だけで行の頭から20文字
(?m:^)(?=(.)\1*+(?>(.)(?>\1|\2)*+(?>(.)(?>\1|\2|\3)*+(?>(.)(?>\1|\2|\3|\4)*+(?>(.)(?>\1|\2|\3|\4|\5)*+(.)?+)?+)?+)?+)?+)(?>\1|\2|\3|\4|\5|\6){20}
6種類以下の文字だけで行の頭から20文字
(?m:^)(?=(.)\1*+(?>(.)(?>\1|\2)*+(?>(.)(?>\1|\2|\3)*+(?>(.)(?>\1|\2|\3|\4)*+(?>(.)(?>\1|\2|\3|\4|\5)*+(.)?+)?+)?+)?+)?+)(?>\1|\2|\3|\4|\5|\6){20}
206デフォルトの名無しさん
2020/05/16(土) 20:35:19.65ID:hjibA7SH207デフォルトの名無しさん
2020/05/16(土) 20:49:23.06ID:YcXGn5Zu 言ってる通りの条件でやると滅茶苦茶誤爆して使い物にならんと思う
例が7文字だし、ググって類似の荒らしが使っているものにマッチしつつ誤爆控え目にするように
110字以上のレスの最後まで7字以下というくらいの条件にしたらこんな感じか
^ *(?=.{110})([^<br> ])(?:[<br> ]|\1)*([^<br> ])(?:[<br> ]|\1|\2)*([^<br> ])(?:[<br> ]|\1|\2|\3)*([^<br> ])(?:[<br> ]|\1|\2|\3|\4)*
【改行】([^<br> ])(?:[<br> ]|\1|\2|\3|\4|\5)*([^<br> ])(?:[<br> ]|\1|\2|\3|\4|\5|\6)*([^<br> ])(?:[<br> ]|\1|\2|\3|\4|\5|\6|\7)*$
【改行】とその前の改行を削除
例が7文字だし、ググって類似の荒らしが使っているものにマッチしつつ誤爆控え目にするように
110字以上のレスの最後まで7字以下というくらいの条件にしたらこんな感じか
^ *(?=.{110})([^<br> ])(?:[<br> ]|\1)*([^<br> ])(?:[<br> ]|\1|\2)*([^<br> ])(?:[<br> ]|\1|\2|\3)*([^<br> ])(?:[<br> ]|\1|\2|\3|\4)*
【改行】([^<br> ])(?:[<br> ]|\1|\2|\3|\4|\5)*([^<br> ])(?:[<br> ]|\1|\2|\3|\4|\5|\6)*([^<br> ])(?:[<br> ]|\1|\2|\3|\4|\5|\6|\7)*$
【改行】とその前の改行を削除
208デフォルトの名無しさん
2020/05/16(土) 21:09:00.00ID:BiE2hTzx 別の判定要件にしないと誤爆頻発しそう...
例えば「特定コード範囲の文字が連続n回出現でNG」とかじゃダメなの?
例えば「特定コード範囲の文字が連続n回出現でNG」とかじゃダメなの?
209デフォルトの名無しさん
2020/05/16(土) 21:23:17.44ID:hjibA7SH >>208
確率的に連続しないケースが結構出ちゃいますよね
確率的に連続しないケースが結構出ちゃいますよね
210デフォルトの名無しさん
2020/05/17(日) 01:33:54.38ID:C/hIIgkx 文字→文字または文字パターン、でどうだろう
そのボットの仕様を把握してないし実際のレスも見たことないのでなんとも言えないけど、文字種の制約以外に傾向を見いだせないってこと?
そのボットの仕様を把握してないし実際のレスも見たことないのでなんとも言えないけど、文字種の制約以外に傾向を見いだせないってこと?
211デフォルトの名無しさん
2020/05/17(日) 03:28:48.68ID:EMK05c2V >>210
こんな感じ
東大医学部医学科卒業、3年連続国試不合格のルシファーさん、偏差値95.3を取った模試の成績表をTwitterのヘッダーにしてしまう
http://leia.5ch.net/test/read.cgi/poverty/1589560323/
電光掲示板的なAAによって正規表現NGを逃れようとしている
今のところ
(\S{0,10}\s){10,}
(?=(.)\1*+(?>(.)(?>\1|\2)*+(?>(.)(?>\1|\2|\3)*+(?>(.)(?>\1|\2|\3|\4)*+(?>(.)(?>\1|\2|\3|\4|\5)*+(?>(.)(?>\1|\2|\3|\4|\5|\6)*+(?>(.)(?>\1|\2|\3|\4|\5|\6|\7)*+(?>(.)(?>\1|\2|\3|\4|\5|\6|\7|\8)*+(.)?+)?+)?+)?+)?+)?+)?+)?+)(?>\1|\2|\3|\4|\5|\6|\7|\8){17,}
で完璧に対応出来てる
こんな感じ
東大医学部医学科卒業、3年連続国試不合格のルシファーさん、偏差値95.3を取った模試の成績表をTwitterのヘッダーにしてしまう
http://leia.5ch.net/test/read.cgi/poverty/1589560323/
電光掲示板的なAAによって正規表現NGを逃れようとしている
今のところ
(\S{0,10}\s){10,}
(?=(.)\1*+(?>(.)(?>\1|\2)*+(?>(.)(?>\1|\2|\3)*+(?>(.)(?>\1|\2|\3|\4)*+(?>(.)(?>\1|\2|\3|\4|\5)*+(?>(.)(?>\1|\2|\3|\4|\5|\6)*+(?>(.)(?>\1|\2|\3|\4|\5|\6|\7)*+(?>(.)(?>\1|\2|\3|\4|\5|\6|\7|\8)*+(.)?+)?+)?+)?+)?+)?+)?+)?+)(?>\1|\2|\3|\4|\5|\6|\7|\8){17,}
で完璧に対応出来てる
212デフォルトの名無しさん
2020/05/17(日) 03:45:05.05ID:EMK05c2V 17文字もあるのに文字種が8種以内って
自然言語としては有り得ないわけですよ
そのエントロピー的な性質をターゲットにしてる
つまり完全ランダムじゃなくて電光掲示板的に嫌がらせメッセージを目立たせたいという意図を持ってるから可能になる手法
自然言語としては有り得ないわけですよ
そのエントロピー的な性質をターゲットにしてる
つまり完全ランダムじゃなくて電光掲示板的に嫌がらせメッセージを目立たせたいという意図を持ってるから可能になる手法
213デフォルトの名無しさん
2020/05/17(日) 03:46:57.41ID:C/hIIgkx >>211
なるほどw
なるほどw
214デフォルトの名無しさん
2020/05/17(日) 04:00:56.20ID:EMK05c2V こうかはばつぐんだ!
必死にNG逃れのためのスクリプト書いたのに全て通用しなくて発狂して逃げたww
必死にNG逃れのためのスクリプト書いたのに全て通用しなくて発狂して逃げたww
215デフォルトの名無しさん
2020/05/17(日) 04:36:26.20ID:zN/y7CUr 結果として片棒担がされてた訳か
https://leia.5ch.net/test/read.cgi/poverty/1589560323/870
870 番組の途中ですがアフィサイトへの転載は禁止です (ワッチョイW 2bde-sAUE) 2020/05/17(日) 00:30:59.00 ID:LtSh5oo60
再度書き込みなっちまったけど、レスすんなよ
グズ正規表現野郎。
お前が煽ったせいで、さらにサキオタアンチがめんどくさくなった。
皆、ひっそり、IDやワッチョイと、少しの正規表現でNGしてた。
それらができない5chブラウザとかあるのに。
自分だけ調子に乗るなよクズ。
https://leia.5ch.net/test/read.cgi/poverty/1589560323/870
870 番組の途中ですがアフィサイトへの転載は禁止です (ワッチョイW 2bde-sAUE) 2020/05/17(日) 00:30:59.00 ID:LtSh5oo60
再度書き込みなっちまったけど、レスすんなよ
グズ正規表現野郎。
お前が煽ったせいで、さらにサキオタアンチがめんどくさくなった。
皆、ひっそり、IDやワッチョイと、少しの正規表現でNGしてた。
それらができない5chブラウザとかあるのに。
自分だけ調子に乗るなよクズ。
216デフォルトの名無しさん
2020/05/17(日) 04:41:56.29ID:EMK05c2V >>215
それ荒らし本人が正規表現で完封されるのが悔しくて書いたやつだぞ
それ荒らし本人が正規表現で完封されるのが悔しくて書いたやつだぞ
217デフォルトの名無しさん
2020/05/17(日) 04:45:15.72ID:zN/y7CUr そうなのか
でもはたから見てると一緒だと思うよ
荒らし構うのはただの荒らしだよ
でもはたから見てると一緒だと思うよ
荒らし構うのはただの荒らしだよ
218デフォルトの名無しさん
2020/05/17(日) 04:53:36.77ID:EMK05c2V >>217
この荒らしは誰からも無視されてるのに何年も続けてる奴だからな
自分がターゲットにされて遊ばれて悔しいという体験は初めてだろうな
放置すれば荒らしが消えると思うのは間違い
キチガイは何年でも休まずに荒らし続ける
しかも手動で
そのキチガイの世界を壊してあげる作戦
この荒らしは誰からも無視されてるのに何年も続けてる奴だからな
自分がターゲットにされて遊ばれて悔しいという体験は初めてだろうな
放置すれば荒らしが消えると思うのは間違い
キチガイは何年でも休まずに荒らし続ける
しかも手動で
そのキチガイの世界を壊してあげる作戦
219デフォルトの名無しさん
2020/05/17(日) 05:51:07.31ID:zN/y7CUr 自粛警察みたいな奴だな
正義とか妄信しない方が良いぞ
正義とか妄信しない方が良いぞ
220デフォルトの名無しさん
2020/05/17(日) 05:52:32.20ID:EMK05c2V アホを悔しがらせて頭の体操になるなんて最高やん
こんな快感なこと他にある?
こんな快感なこと他にある?
221デフォルトの名無しさん
2020/05/17(日) 13:46:59.90ID:2FMa8UuX 正規表現を自動生成するAIはまだ?
222デフォルトの名無しさん
2020/05/17(日) 18:37:04.48ID:EMK05c2V 機械学習で正規表現を獲得するみたいなの出来ないですかね
223デフォルトの名無しさん
2020/05/17(日) 20:33:27.11ID:MuJmPUno 他力本願+ノイズは一人前
224デフォルトの名無しさん
2020/05/29(金) 08:30:19.28ID:/k2a15rY *でも+でもどちらでもよいという場面では*にするのが慣例でしょうか?それとも文字通りどちらでもいいのかな?
225デフォルトの名無しさん
2020/05/29(金) 11:43:39.33ID://ihWgfL このスレに来る奴って論理的思考をする人達だと思ってたけど、
慣例とか持ち出すような奴も来るんだな
意味が有って違うSyntaxなんだから適切な方を使え
慣例とか持ち出すような奴も来るんだな
意味が有って違うSyntaxなんだから適切な方を使え
226デフォルトの名無しさん
2020/05/29(金) 12:20:15.31ID:KLwVXlC+ どっちでもいいってどういう場合だ
どっちかになるだろ
どっちかになるだろ
227224
2020/05/29(金) 13:19:30.03ID:YZO921+1 例えば対象が1回以上の繰り返しだとします
0回以上には1回以上が含まれているのだから、どちらかが適切であるという積極的な理由が見つかりません
0回以上には1回以上が含まれているのだから、どちらかが適切であるという積極的な理由が見つかりません
228デフォルトの名無しさん
2020/05/29(金) 13:22:19.49ID:KLwVXlC+ 一つも無くていいってのと一つは必ず無いといけないってのは両立する場面は無い
229デフォルトの名無しさん
2020/05/29(金) 13:27:35.99ID:zvuAHZcb 「1回以上」ならつべこべ言わずに"+"だな
「0回は外したい」という意味を含むのであれば
"*"は仕様から外れる
個人的には"*"はできるだけ使わない
「0回は外したい」という意味を含むのであれば
"*"は仕様から外れる
個人的には"*"はできるだけ使わない
230デフォルトの名無しさん
2020/05/29(金) 15:05:09.67ID:IKIHl4j2 1回以上であることが分かっているのであれば0回の可能性がないことを示しておけるというのが合理的理由だよ。
*でマッチさせられるとしても後からソース見て混乱するだけだ。慣例といえば慣例だが機能すればいいというものでもない。
*でマッチさせられるとしても後からソース見て混乱するだけだ。慣例といえば慣例だが機能すればいいというものでもない。
231デフォルトの名無しさん
2020/05/29(金) 19:24:39.89ID:ZvrYTh83 >>227
読む人(未来の自分含む)のことを考えれば、可能な限り対象を絞り込んだ方が(設計意図が読み取りやすくて)よい
読む人(未来の自分含む)のことを考えれば、可能な限り対象を絞り込んだ方が(設計意図が読み取りやすくて)よい
232デフォルトの名無しさん
2020/05/29(金) 21:22:17.43ID:VNOYZXTT A+とAA*の効率化の話かと思った
AA*の方が最初のAで最適化される分だけ速いとかなんとか
AA*の方が最初のAで最適化される分だけ速いとかなんとか
233デフォルトの名無しさん
2020/05/29(金) 21:49:09.90ID:dZOo8Hm0 >>232
オートマトンを組むので速度は変わらないと思うが
オートマトンを組むので速度は変わらないと思うが
234デフォルトの名無しさん
2020/06/18(木) 21:13:18.22ID:jAvldfC1 https://i.imgur.com/ngqWoOX.jpg
上を下としたいのですが、2回に分けることは可能ですが、1回でやれますでしょうか?スラッシュが含まれる場合、そこをエスケープしたいのです
scriptタグ貼ると怒られますので、画像です(´・ω・`)、、、
上を下としたいのですが、2回に分けることは可能ですが、1回でやれますでしょうか?スラッシュが含まれる場合、そこをエスケープしたいのです
scriptタグ貼ると怒られますので、画像です(´・ω・`)、、、
235デフォルトの名無しさん
2020/06/18(木) 22:17:30.24ID:3QD4/INi >>234
正規表現: (<([^>]+)>[^<]*<)(/\2>)
置換 : "$1\$3"
正規表現: (<([^>]+)>[^<]*<)(/\2>)
置換 : "$1\$3"
236デフォルトの名無しさん
2020/06/18(木) 22:21:10.54ID:3QD4/INi 環境によっては
置換: "$1\\$3"
としないとダメなこともあり
置換: "$1\\$3"
としないとダメなこともあり
237デフォルトの名無しさん
2020/06/18(木) 22:28:45.36ID:3QD4/INi238デフォルトの名無しさん
2020/06/18(木) 22:37:34.06ID:G7fdNfOT <スクリプト>(ここが変化)</スクリプト>
って感じでスクリプトとスクリプトの間が変化するだけじゃない?
って感じでスクリプトとスクリプトの間が変化するだけじゃない?
239デフォルトの名無しさん
2020/06/18(木) 22:42:36.83ID:L9lBZl+g 間があるのなら通常1行ではないだろう
240デフォルトの名無しさん
2020/06/18(木) 22:48:48.44ID:kZOKQ/+u <script>([^\b]*?)</script>
"<script>\1<\\/script>"
"<script>\1<\\/script>"
241デフォルトの名無しさん
2020/06/19(金) 02:59:23.82ID:yAdMpEG/ 厚生労働省がガイドラインを発表…「副業」公認の時代が来た?
https://www.iza.ne.jp/kiji/economy/news/200516/ecn20051620000005-n1.html
フリーランス向け報酬即日払いサービス『先払い』受付開始7ヶ月で申込件数1,000件突破
https://prtimes.jp/main/html/rd/p/000000026.000047439.html
副業プラットフォーム「Kasooku」が約1.9億円調達、マッチング件数は5000件突破
https://jp.techcrunch.com/2020/04/30/kasooku-fundraising/
副業がしやすくなった?リモートワークを実施してよかったと思うことTOP5
https://dime.jp/genre/914967/
ポストコロナ時代の人生に副業は欠かせない
https://www.gentosha.jp/article/15457/
副業が社員を強くする コロナ・ショックが加速する新しい雇用の形
https://business.nikkei.com/atcl/gen/19/00149/042300009/
4割以上が「副業意欲向上」「副業しやすくなった」と変化|
新型コロナウイルスの影響下における働き方の実態・意識調査
https://prtimes.jp/main/html/rd/p/000000009.000040832.html
https://www.iza.ne.jp/kiji/economy/news/200516/ecn20051620000005-n1.html
フリーランス向け報酬即日払いサービス『先払い』受付開始7ヶ月で申込件数1,000件突破
https://prtimes.jp/main/html/rd/p/000000026.000047439.html
副業プラットフォーム「Kasooku」が約1.9億円調達、マッチング件数は5000件突破
https://jp.techcrunch.com/2020/04/30/kasooku-fundraising/
副業がしやすくなった?リモートワークを実施してよかったと思うことTOP5
https://dime.jp/genre/914967/
ポストコロナ時代の人生に副業は欠かせない
https://www.gentosha.jp/article/15457/
副業が社員を強くする コロナ・ショックが加速する新しい雇用の形
https://business.nikkei.com/atcl/gen/19/00149/042300009/
4割以上が「副業意欲向上」「副業しやすくなった」と変化|
新型コロナウイルスの影響下における働き方の実態・意識調査
https://prtimes.jp/main/html/rd/p/000000009.000040832.html
242デフォルトの名無しさん
2020/06/19(金) 05:44:59.40ID:LA4wBl0H243デフォルトの名無しさん
2020/06/19(金) 07:43:33.01ID:b4DLgcmt244デフォルトの名無しさん
2020/06/19(金) 10:22:50.49ID:ecFmQJtB 鬼雲
(?<!")(<([^>\s]++).*?>[^\b]*?<)(/\2>)(?!")
"\1\\\3"
制限
ネストの回数分、全置換の繰り返しが必要
<div id=a><div id=b>test</div></div> こういうのも行けるが
id=aの開始タグとid=bの終了タグの組み合わせで置換され次にid=bの始、id=aの終で処理される
<div id=a>"abc"<div id=b>test</div>"def"</div> タグの外側直近に"があるものは否定(先|戻り)読みで"を見ているので無理
(?<!")(<([^>\s]++).*?>[^\b]*?<)(/\2>)(?!")
"\1\\\3"
制限
ネストの回数分、全置換の繰り返しが必要
<div id=a><div id=b>test</div></div> こういうのも行けるが
id=aの開始タグとid=bの終了タグの組み合わせで置換され次にid=bの始、id=aの終で処理される
<div id=a>"abc"<div id=b>test</div>"def"</div> タグの外側直近に"があるものは否定(先|戻り)読みで"を見ているので無理
245デフォルトの名無しさん
2020/06/19(金) 11:06:15.25ID:LA4wBl0H ●Regular Expressionの使用環境
mery2.6.7です
●検索か置換か?
置き換えしたいです
●説明
先頭と行頭に"を追加し、/をエスケープしたいです
●対象データ
https://ideone.com/mNblKp
>>243
了解です
直しました
複数回に分けてやるのが普通なんでしょうか?
mery2.6.7です
●検索か置換か?
置き換えしたいです
●説明
先頭と行頭に"を追加し、/をエスケープしたいです
●対象データ
https://ideone.com/mNblKp
>>243
了解です
直しました
複数回に分けてやるのが普通なんでしょうか?
246デフォルトの名無しさん
2020/06/19(金) 11:47:09.20ID:x+g7YIVM >>245
これダブルクォーテーションもエスケープしなきゃいけないんじゃないの?
これダブルクォーテーションもエスケープしなきゃいけないんじゃないの?
247デフォルトの名無しさん
2020/06/19(金) 12:02:33.17ID:LA4wBl0H >>246
すみません、勘違いしていました
エスケープ対象は"で、/はエスケープ対象ではないです。
vscodeのスニペットに登録する際に、"をエスケープしないといけないんです
これ、なにげに面倒ですね
すみません、勘違いしていました
エスケープ対象は"で、/はエスケープ対象ではないです。
vscodeのスニペットに登録する際に、"をエスケープしないといけないんです
これ、なにげに面倒ですね
248デフォルトの名無しさん
2020/06/19(金) 14:19:20.57ID:a2rlVyD0 >>247
HTMLが一般的ではないんだけど
通常はタグと閉じタグとが別の行になることが多いし
あるいは全てが一行というものもあるんだけど
こんな特殊なものにだけ対応でいいのか?
また各タグ毎に""だとダメなのか?
こうすれば行が違ってても大丈夫となるけど
【例】 <h1>h1</h1> → "<h1>"h1"</h1>"
HTMLが一般的ではないんだけど
通常はタグと閉じタグとが別の行になることが多いし
あるいは全てが一行というものもあるんだけど
こんな特殊なものにだけ対応でいいのか?
また各タグ毎に""だとダメなのか?
こうすれば行が違ってても大丈夫となるけど
【例】 <h1>h1</h1> → "<h1>"h1"</h1>"
249デフォルトの名無しさん
2020/06/19(金) 16:14:22.39ID:/6wBUF7o 自分macなのでmery使えないの試せない
javascriptのマクロが使えるみたいじゃん
正規表現だけだと厳しいかも
var code =`<!DOCTYPE html> 〜省略〜 </html>`
var code = code.replace(/(<.*?>)\n/g, '"$1"\n').replace(/\//g, '\\\/')
console.log(code)
javascriptの置き換え部分だけ書くと上のでいけるはず
meryのマクロの体裁に整えればこれでいけると思う
環境によって\はバックスラッシュだし$もバックスラッシュです
javascriptのマクロが使えるみたいじゃん
正規表現だけだと厳しいかも
var code =`<!DOCTYPE html> 〜省略〜 </html>`
var code = code.replace(/(<.*?>)\n/g, '"$1"\n').replace(/\//g, '\\\/')
console.log(code)
javascriptの置き換え部分だけ書くと上のでいけるはず
meryのマクロの体裁に整えればこれでいけると思う
環境によって\はバックスラッシュだし$もバックスラッシュです
250デフォルトの名無しさん
2020/06/19(金) 16:33:24.58ID:x+g7YIVM var2回もいらんし。
¥nは$にしないとそのスクリプト自体動作失敗してるでしょ。
¥nは$にしないとそのスクリプト自体動作失敗してるでしょ。
251デフォルトの名無しさん
2020/06/19(金) 16:45:53.57ID:/6wBUF7o >¥nは$にしないと
へえそうなんだ
macだとそのままいけるんだよね
var 2回いらねはさすがに難癖だね
へえそうなんだ
macだとそのままいけるんだよね
var 2回いらねはさすがに難癖だね
252デフォルトの名無しさん
2020/06/19(金) 16:49:07.22ID:LA4wBl0H >>248
vscodeのスニペット登録はそういうルールのようです
やはり複数回に分けるのが利口でしょうか
プログラムだって何回かに処理を分けますもんね
必須ではないですが、知識として知りたいなあと思った次第です
vscodeのスニペット登録はそういうルールのようです
やはり複数回に分けるのが利口でしょうか
プログラムだって何回かに処理を分けますもんね
必須ではないですが、知識として知りたいなあと思った次第です
253デフォルトの名無しさん
2020/06/19(金) 17:06:56.57ID:x+g7YIVM254デフォルトの名無しさん
2020/06/19(金) 18:05:26.45ID:LA4wBl0H >>249
自分はpythonでやってみますです
自分はpythonでやってみますです
255デフォルトの名無しさん
2020/06/19(金) 18:07:51.43ID:a2rlVyD0 ひょっとするけど
タグ関係なく単に各行を""で括るってだけなんじゃ?
タグ関係なく単に各行を""で括るってだけなんじゃ?
256デフォルトの名無しさん
2020/06/19(金) 18:24:29.90ID:a2rlVyD0 スニペット登録でググってみたら
jsonで記述と書かれてる
やっぱりタグは無関係で
行の前後を""で括るだけだし、カンマ区切りも要る
"Inner": {
"prefix": "in",
"body": [
"<section id=\"$1\">",
"\t<div class=\"inner\">",
"\t\t$2",
"\t</div><!-- .inner -->",
"</section>"
],
},
jsonで記述と書かれてる
やっぱりタグは無関係で
行の前後を""で括るだけだし、カンマ区切りも要る
"Inner": {
"prefix": "in",
"body": [
"<section id=\"$1\">",
"\t<div class=\"inner\">",
"\t\t$2",
"\t</div><!-- .inner -->",
"</section>"
],
},
257デフォルトの名無しさん
2020/06/19(金) 18:36:21.20ID:LA4wBl0H え、そうなのですか、、、
258デフォルトの名無しさん
2020/06/19(金) 18:57:56.53ID:a2rlVyD0 そもそもキー入力の短縮だし、基本はテンプレート登録だ
"Print to console": {
"prefix": "log",
"body": [
"console.log('$1');",
"$2"
],
"description": "Log output to console"
あと、スニペット登録入力用のvscode拡張機能もあるようだ
"Print to console": {
"prefix": "log",
"body": [
"console.log('$1');",
"$2"
],
"description": "Log output to console"
あと、スニペット登録入力用のvscode拡張機能もあるようだ
259デフォルトの名無しさん
2020/06/19(金) 21:44:28.86ID:q14TQ9ke ggrks
https://www.google.com/search?q=vscode スニペット 登録 拡張
https://www.google.com/search?q=vscode スニペット 登録 拡張
260デフォルトの名無しさん
2020/06/20(土) 00:03:50.12ID:D9McnEc6 #一行目
AAAランダム文字列1AAAランダム文字列2BBBランダム文字列3BBBランダム文字列4CCC
#二行目
AAAランダム文字列5BBB
このような文章があって
AAAランダム文字列2BBB
だけを1回の処理で抽出することは可能ですかね?
AAA〜CCCで挟まれ、かつAAA〜BBBの真の最短マッチというのでしょうか
二行目は抽出したくないです
AAA((?!AAA).)*CCC
↓
AAA((?!AAA|BBB).)*BBB
と2回の処理ではできたのですがどうも悔しいです
AAAランダム文字列1AAAランダム文字列2BBBランダム文字列3BBBランダム文字列4CCC
#二行目
AAAランダム文字列5BBB
このような文章があって
AAAランダム文字列2BBB
だけを1回の処理で抽出することは可能ですかね?
AAA〜CCCで挟まれ、かつAAA〜BBBの真の最短マッチというのでしょうか
二行目は抽出したくないです
AAA((?!AAA).)*CCC
↓
AAA((?!AAA|BBB).)*BBB
と2回の処理ではできたのですがどうも悔しいです
261デフォルトの名無しさん
2020/06/20(土) 00:10:55.64ID:GUrzgoSo >>260
AAA.*(AAA.*?BBB).*CCC
AAA.*(AAA.*?BBB).*CCC
262デフォルトの名無しさん
2020/06/20(土) 00:29:48.90ID:Spmc6WsU ランダム文字列の最初(最後)の文字がA(B)だった時は?
263デフォルトの名無しさん
2020/06/20(土) 00:44:31.03ID:Spmc6WsU264デフォルトの名無しさん
2020/06/20(土) 00:44:59.32ID:Spmc6WsU 誤爆スマン
265デフォルトの名無しさん
2020/06/20(土) 00:52:46.51ID:D9McnEc6266デフォルトの名無しさん
2020/06/20(土) 02:01:55.18ID:GUrzgoSo >>265
それは正規表現の問題じゃなくgrepの使い方の問題で
キャプチャグループを取り出せてないだけだと思う
pcregrep -o1 'AAA.*?(AAA.*?BBB).*CCC' <input>
とか
grep -oP 'AAA.*?¥K(AAA.*?BBB)(?=.*?CCC)' <input>
とか工夫して
それは正規表現の問題じゃなくgrepの使い方の問題で
キャプチャグループを取り出せてないだけだと思う
pcregrep -o1 'AAA.*?(AAA.*?BBB).*CCC' <input>
とか
grep -oP 'AAA.*?¥K(AAA.*?BBB)(?=.*?CCC)' <input>
とか工夫して
267デフォルトの名無しさん
2020/06/20(土) 02:35:31.58ID:D9McnEc6268デフォルトの名無しさん
2020/06/21(日) 11:54:44.04ID:RSezRE5h マークダウンのマッチのさせ方について
この2つのうち、上だけをマッチさせたいです
#半角スペースh1
#半角スペース半角スペース半角スペースh1
しかし
^# .*$
だと、両方マッチします。半角スペースが1つの場合のみマッチさせられるでしょうか
この2つのうち、上だけをマッチさせたいです
#半角スペースh1
#半角スペース半角スペース半角スペースh1
しかし
^# .*$
だと、両方マッチします。半角スペースが1つの場合のみマッチさせられるでしょうか
269デフォルトの名無しさん
2020/06/21(日) 12:19:16.08ID:1s00JmZm ^# [^ ]
270デフォルトの名無しさん
2020/06/21(日) 14:46:34.76ID:RSezRE5h ありがとうございます
# h
の部分だけマッチします
一文字の繰り返しの部分は、どう指定してるんでしょうか?
# h
の部分だけマッチします
一文字の繰り返しの部分は、どう指定してるんでしょうか?
271デフォルトの名無しさん
2020/06/21(日) 14:58:06.74ID:wEwARBW2 [^ ]+
272デフォルトの名無しさん
2020/06/21(日) 15:46:15.97ID:RSezRE5h だとスペースがマッチしません
ありがとうございます
ありがとうございます
273デフォルトの名無しさん
2020/06/21(日) 16:11:36.93ID:1s00JmZm274デフォルトの名無しさん
2020/06/21(日) 18:30:44.16ID:RSezRE5h ^#[ ]([^ ].*)$
これでいけたブリ
これでいけたブリ
275デフォルトの名無しさん
2020/06/27(土) 20:14:07.00ID:V+005EHj276デフォルトの名無しさん
2020/06/28(日) 00:20:52.36ID:x4PVBa+w chmateとやらのスレで聞いた方がいいと思うが
277デフォルトの名無しさん
2020/06/28(日) 20:47:34.83ID:hqGvkXPW わかる方教えてください
yyyy/mm/dd の形式で、下記のような0埋め処理をしたいのですが、一発処理方法がわかりません
大量にあるファイルを秀丸にてgrep置換予定です。空白がジャマすぐる
今後も処理の必要があるので、できれば一発、無理なら2周かな…
ex.) 2020/ 6/ 1 ⇒ 2020/06/01
([0-9]{4})/( [0-9]|[0-9]{2})/( [0-9]|[0-9]{2})
これで全条件拾えるが処理できないし、下記だと3周しないといけないし
([0-9]{4})/ ([0-9])/([0-9]{2}) ⇒ \1/0\2/\3 //月のみ1桁
([0-9]{4})/([0-9]{2})/ ([0-9]) ⇒ \1/\2/0\3 //日のみ1桁
([0-9]{4})/ ([0-9])/ ([0-9]) ⇒ \1/0\2/0\3 //両方1桁
どなたか、お願いしますm(_ _)m
yyyy/mm/dd の形式で、下記のような0埋め処理をしたいのですが、一発処理方法がわかりません
大量にあるファイルを秀丸にてgrep置換予定です。空白がジャマすぐる
今後も処理の必要があるので、できれば一発、無理なら2周かな…
ex.) 2020/ 6/ 1 ⇒ 2020/06/01
([0-9]{4})/( [0-9]|[0-9]{2})/( [0-9]|[0-9]{2})
これで全条件拾えるが処理できないし、下記だと3周しないといけないし
([0-9]{4})/ ([0-9])/([0-9]{2}) ⇒ \1/0\2/\3 //月のみ1桁
([0-9]{4})/([0-9]{2})/ ([0-9]) ⇒ \1/\2/0\3 //日のみ1桁
([0-9]{4})/ ([0-9])/ ([0-9]) ⇒ \1/0\2/0\3 //両方1桁
どなたか、お願いしますm(_ _)m
278デフォルトの名無しさん
2020/06/28(日) 22:32:55.02ID:pbfRuAan > 大量にあるファイルを
> 今後も処理の必要がある
スクリプトでやるものじゃね?
以下で2週で出来るが秀丸の正規表現は知らんからヒントにでもして
(?<=\d{4}/) (?=\d/[\d ]\d)
0
(?<=\d{4}/\d\d/) (?=\d)
0
(先|戻り)読みが使えないなら
(\d{4})/ (\d/[\d ]\d)
\1/0\2
(\d{4}/\d\d)/ (\d)
\1/0\2
> 今後も処理の必要がある
スクリプトでやるものじゃね?
以下で2週で出来るが秀丸の正規表現は知らんからヒントにでもして
(?<=\d{4}/) (?=\d/[\d ]\d)
0
(?<=\d{4}/\d\d/) (?=\d)
0
(先|戻り)読みが使えないなら
(\d{4})/ (\d/[\d ]\d)
\1/0\2
(\d{4}/\d\d)/ (\d)
\1/0\2
279デフォルトの名無しさん
2020/06/28(日) 22:57:55.61ID:CZLL+74z >>277
秀丸は使えないのでうまくいくかは不明だが
検索文字列:\d{4}/\K (?=\d/(?:\d\d\D| \d\D))|\d{4}/\d\d/\K (?=\d\D)|\G\d{1,2}/\K (?=\d\D)
置換文字列:0
\Kがダメなら、(?<=\d{4}/)とかに変えてみる(3箇所)
ただし誤爆は起きるかもしれない
秀丸は使えないのでうまくいくかは不明だが
検索文字列:\d{4}/\K (?=\d/(?:\d\d\D| \d\D))|\d{4}/\d\d/\K (?=\d\D)|\G\d{1,2}/\K (?=\d\D)
置換文字列:0
\Kがダメなら、(?<=\d{4}/)とかに変えてみる(3箇所)
ただし誤爆は起きるかもしれない
280デフォルトの名無しさん
2020/06/28(日) 23:14:26.22ID:CZLL+74z なお誤爆の可能性は、
1) ファイル先頭に、 6/28 xxx で始まっていた場合
2) 2020/ 6/28/ 9 xxx とか引き続き/ 9とかがある場合
3)ファイル末尾で、2020/ 6/28(改行コードなし)で終わっている場合は変換されない
まあ改良すれば3)は問題なくなるけど
1) ファイル先頭に、 6/28 xxx で始まっていた場合
2) 2020/ 6/28/ 9 xxx とか引き続き/ 9とかがある場合
3)ファイル末尾で、2020/ 6/28(改行コードなし)で終わっている場合は変換されない
まあ改良すれば3)は問題なくなるけど
281デフォルトの名無しさん
2020/06/28(日) 23:16:24.29ID:CZLL+74z 2)は間違い 2020/ 6/ 8/ 9 とかの場合に訂正
282デフォルトの名無しさん
2020/06/28(日) 23:19:24.85ID:CZLL+74z あ、1)も間違ってる
6/ 8 xxxに訂正(空白なしで数字1文字で始まる場合)
6/ 8 xxxに訂正(空白なしで数字1文字で始まる場合)
283デフォルトの名無しさん
2020/06/29(月) 00:31:06.80ID:G5zcTgI1 秀丸なら普通にマクロでプログラム書いた方が楽じゃない?
284デフォルトの名無しさん
2020/06/29(月) 00:32:15.99ID:1iNHQcBG 1)は、\G(?!^)というふうに先頭の場合を除けばいける
残りの2)3)は工夫次第
残りの2)3)は工夫次第
285デフォルトの名無しさん
2020/06/29(月) 16:30:01.33ID:sN5cgPC+ 難しく考えなくても置換対象以外に"/ "が無いなら
/[ ]
/0
で一発
/[ ]
/0
で一発
286デフォルトの名無しさん
2020/06/29(月) 16:59:50.16ID:0ldK0o0F これでできないかい?
FIND:(?<=¥d{4}/[ ¥d]¥d/) (¥d)|(?<=¥d{4}/) (¥d)(?=/)
REP:0$1$2
FIND:(?<=¥d{4}/[ ¥d]¥d/) (¥d)|(?<=¥d{4}/) (¥d)(?=/)
REP:0$1$2
287デフォルトの名無しさん
2020/06/29(月) 17:05:41.11ID:0ldK0o0F こっちのほうが確実か。
FIND:(?<=¥d{4}/) (¥d)(?=/[ ¥d]¥d)|(?<=¥d{4}/[ ¥d]¥d/) (¥d)
REP:0$1$2
FIND:(?<=¥d{4}/) (¥d)(?=/[ ¥d]¥d)|(?<=¥d{4}/[ ¥d]¥d/) (¥d)
REP:0$1$2
288デフォルトの名無しさん
2020/06/29(月) 17:28:03.91ID:sN5cgPC+289デフォルトの名無しさん
2020/06/29(月) 17:41:18.50ID:0ldK0o0F290デフォルトの名無しさん
2020/06/29(月) 17:54:20.25ID:TUm10+y/ 277 です
皆さんありがとうございます!
レベルが低くて理解できないのもありますが、勉強のためにしっかり精査してみます
>>285
まさにそれですわ
てゆーか別に正規表現使わなくても実現できるという罠
勉強になりました m(_ _)m
改めましてありがとうございました。
皆さんありがとうございます!
レベルが低くて理解できないのもありますが、勉強のためにしっかり精査してみます
>>285
まさにそれですわ
てゆーか別に正規表現使わなくても実現できるという罠
勉強になりました m(_ _)m
改めましてありがとうございました。
291デフォルトの名無しさん
2020/06/29(月) 18:05:49.23ID:sN5cgPC+292デフォルトの名無しさん
2020/06/29(月) 18:09:28.38ID:0ldK0o0F293デフォルトの名無しさん
2020/06/29(月) 18:13:56.28ID:sN5cgPC+294デフォルトの名無しさん
2020/06/29(月) 18:25:35.41ID:sN5cgPC+295デフォルトの名無しさん
2020/06/29(月) 23:31:59.63ID:G5zcTgI1 質問者そっちのけの場外乱闘にワロタ
296デフォルトの名無しさん
2020/06/30(火) 01:41:09.48ID:ZFF7tVch だが、そこがいい
297デフォルトの名無しさん
2020/06/30(火) 13:15:03.17ID:tIigavUn >>279で\Gの使い方が分かった。thx
298デフォルトの名無しさん
2020/07/02(木) 02:54:39.72ID:fxvoVb8t アプリからファイアウォールにまで使われる正規表現を標的にした「ReDoS攻撃」とは?
https://gigazine.net/news/20200701-redos-cheet-sheet/
ネット中は正規表現を使わないではだめなのか
でもブラウザも中で使っているだろうし
https://gigazine.net/news/20200701-redos-cheet-sheet/
ネット中は正規表現を使わないではだめなのか
でもブラウザも中で使っているだろうし
299デフォルトの名無しさん
2020/07/03(金) 10:38:52.53ID:fe+b4Rno 正規表現についてですが、このhtmlの置き換えは一発でできますか?
この前からいろいろ試してるんですが、、
https://ideone.com/vpxoNS
行頭と行末にダブルクォーテーションをつけ、urlの部分はエスケープしています。
vscodeでスニペットを登録する際に、このようにダブルクオーテーションを使用する必要があるのです。
この前からいろいろ試してるんですが、、
https://ideone.com/vpxoNS
行頭と行末にダブルクォーテーションをつけ、urlの部分はエスケープしています。
vscodeでスニペットを登録する際に、このようにダブルクオーテーションを使用する必要があるのです。
300デフォルトの名無しさん
2020/07/03(金) 11:07:40.28ID:cg7dcvev (^<.*?)(".*?)(".*>)$
"$1¥¥$2¥¥$3"
↑vscode内の検索置換
それと全く同じパターンであれば可能だが、dqが複数出てくる場合はできない。
他のパターンも考えたら、
1.dqのみエスケープ、
2.行頭行末にdqをつける
の2アクションにするか、vscodeでそれ用のjsでも書いて処理するか。
スニペット登録したいものをまとめて書き出しておいて2アクションで処理しても大して手間は変わらんだろ。
"$1¥¥$2¥¥$3"
↑vscode内の検索置換
それと全く同じパターンであれば可能だが、dqが複数出てくる場合はできない。
他のパターンも考えたら、
1.dqのみエスケープ、
2.行頭行末にdqをつける
の2アクションにするか、vscodeでそれ用のjsでも書いて処理するか。
スニペット登録したいものをまとめて書き出しておいて2アクションで処理しても大して手間は変わらんだろ。
301デフォルトの名無しさん
2020/07/03(金) 12:32:41.29ID:fe+b4Rno そうですね 2回でやります
302デフォルトの名無しさん
2020/07/03(金) 13:00:37.53ID:hVBUXcHj Ruby で、" を、\" に置換してから、
冒頭・末尾に、" を追加する
str = '"ja"'
str.gsub!( '"', '\"' )
puts '"' + str + '"'
#=> "\"ja\""
冒頭・末尾に、" を追加する
str = '"ja"'
str.gsub!( '"', '\"' )
puts '"' + str + '"'
#=> "\"ja\""
303デフォルトの名無しさん
2020/07/03(金) 13:11:32.91ID:yfao6bm4 VScodeのプラグインにSnippet Generatorてのがあるみたいだがそれじゃダメなん?
304302
2020/07/03(金) 14:28:11.33ID:hVBUXcHj 漏れなら、Ruby, PowerShell で、
クリップボード経由で変換するスクリプトを書いて、
ダブルクリックで起動できるように、起動部分をVBS で書くかな?
クリップボード経由で変換するスクリプトを書いて、
ダブルクリックで起動できるように、起動部分をVBS で書くかな?
305デフォルトの名無しさん
2020/07/03(金) 14:33:24.34ID:zEGBQA4b 正規表現よりもJSON.strinfigy()を使ったほうが簡単
スニペット用のJSONを出力すればいいだけだからJSでもRubyでも好きなの使えばいい
スニペット用のJSONを出力すればいいだけだからJSでもRubyでも好きなの使えばいい
306デフォルトの名無しさん
2020/07/13(月) 00:17:50.71ID:e/I4Ji0p JavaScript
const kaoru = '薫'
'[薫子]'.match(`[${kaoru}]`)
'[薫子]'.match(`\[${kaoru}\]`)
'[薫子]'.match(new RegExp(`[${kaoru}]`))
'[薫子]'.match(new RegExp(`\[${kaoru}\]`))
全てマッチしてしまうようですが、マッチさせたくありません
[ や ] そのものを文字として扱って判定するにはmatchの引数をどうすればよいでしょうか
const kaoru = '薫'
'[薫子]'.match(`[${kaoru}]`)
'[薫子]'.match(`\[${kaoru}\]`)
'[薫子]'.match(new RegExp(`[${kaoru}]`))
'[薫子]'.match(new RegExp(`\[${kaoru}\]`))
全てマッチしてしまうようですが、マッチさせたくありません
[ や ] そのものを文字として扱って判定するにはmatchの引数をどうすればよいでしょうか
307デフォルトの名無しさん
2020/07/13(月) 00:49:50.36ID:lkNbIdQ1308デフォルトの名無しさん
2020/07/13(月) 19:20:45.29ID:YirsSrYP 教えてください。基本的な質問で恐縮です。
20200706T030000Z
SUMMARY:打合せ
LOCATION:中野
DTEND:20200706T043000Z
から、
$1 0300
$2 打合せ
$3 中野
$4 0430
を抜き出すにはどのようにすればよいでしょうか。
20200706T030000Z
SUMMARY:打合せ
LOCATION:中野
DTEND:20200706T043000Z
から、
$1 0300
$2 打合せ
$3 中野
$4 0430
を抜き出すにはどのようにすればよいでしょうか。
309デフォルトの名無しさん
2020/07/13(月) 19:49:46.79ID:GfOrWnDk ^\d{8}T(\d{4}).*+\nSUMMARY:(.*+)\nLOCATION:(.*+)\nDTEND:\d{8}T(\d{4})
310デフォルトの名無しさん
2020/07/14(火) 13:34:31.12ID:h5j+nt7i 今まで何となくで使ってきたけどキャプチャの変数って式に対し1つしか用意されず
部分式呼び出しや量指定子の繰り返しで増やされずに上書きするみたいですね
^(?<y>2020[01]\d[0-3]\dT([0-2]\d[0-5]\d)00Z)(?:\n[^:\n]++:(.*+)){2}\n[^:]++:\g<y>
\1 \2 \3 \4 \5 \6
20200706T043000Z 0430 中野___
どの環境でもこういう仕様なの?
部分式呼び出しや量指定子の繰り返しで増やされずに上書きするみたいですね
^(?<y>2020[01]\d[0-3]\dT([0-2]\d[0-5]\d)00Z)(?:\n[^:\n]++:(.*+)){2}\n[^:]++:\g<y>
\1 \2 \3 \4 \5 \6
20200706T043000Z 0430 中野___
どの環境でもこういう仕様なの?
311デフォルトの名無しさん
2020/07/14(火) 13:41:52.76ID:tlUY963U312デフォルトの名無しさん
2020/07/14(火) 13:50:15.90ID:tlUY963U もしキャプチャグループが増えるとして
与えられた文字列によって増える順番が異なってくることが考えられるしね
与えられた文字列によって増える順番が異なってくることが考えられるしね
313デフォルトの名無しさん
2020/07/14(火) 21:21:06.51ID:h5j+nt7i キャプチャしたけりゃ繰り返しや\gで省略するなってことなんだろうけど
気になって出来る方法無いか調べてたら鬼雲で捕獲履歴参照なるものがあった
デフォでは無効になってるみたいだけど
ttps://github.com/k-takata/Onigmo/blob/master/doc/RE.ja
補記 5. 実装されているが、既定値では有効にしていない機能
+ 捕獲履歴参照
(?@...) と (?@<name>...)
例. /(?@a)*/.match("aaa") ==> [<0-1>, <1-2>, <2-3>]
使用方法は、sample/listcap.cを参照
有効にしていない理由は、どの程度役に立つかはっきりしないため
気になって出来る方法無いか調べてたら鬼雲で捕獲履歴参照なるものがあった
デフォでは無効になってるみたいだけど
ttps://github.com/k-takata/Onigmo/blob/master/doc/RE.ja
補記 5. 実装されているが、既定値では有効にしていない機能
+ 捕獲履歴参照
(?@...) と (?@<name>...)
例. /(?@a)*/.match("aaa") ==> [<0-1>, <1-2>, <2-3>]
使用方法は、sample/listcap.cを参照
有効にしていない理由は、どの程度役に立つかはっきりしないため
314デフォルトの名無しさん
2020/07/20(月) 23:26:29.84ID:jWd+3fJB ●Regular Expressionの使用環境
サクラエディタ
●検索か置換か?
置き換え
●説明
3の倍数行あるテキストを、3行ごとに1行にまとめたい
●対象データ ※対象データは、必ず半角英数字です。
e
A8
11A9
c
2
LB5
3
d
8X5
●希望する結果
e A8 11A9
c 2 LB5
3 d 8X5
よろしくお願いいたします。
サクラエディタ
●検索か置換か?
置き換え
●説明
3の倍数行あるテキストを、3行ごとに1行にまとめたい
●対象データ ※対象データは、必ず半角英数字です。
e
A8
11A9
c
2
LB5
3
d
8X5
●希望する結果
e A8 11A9
c 2 LB5
3 d 8X5
よろしくお願いいたします。
315デフォルトの名無しさん
2020/07/21(火) 00:07:21.07ID:HQA5x8Lv316デフォルトの名無しさん
2020/07/21(火) 10:14:18.12ID:7bBDhy0Z (?:^.*+|\G.*+[\r\n]+.*+)\K[\r\n]+(.*+)[\r\n]+
_\1_
"_" は半角sp
最終行末尾に改行が無くても可
_\1_
"_" は半角sp
最終行末尾に改行が無くても可
317デフォルトの名無しさん
2020/07/21(火) 10:18:39.84ID:7bBDhy0Z [\r\n]+
は空行がある場合にズレるから使ってる改行文字に直して
CRLFなら\r\n
は空行がある場合にズレるから使ってる改行文字に直して
CRLFなら\r\n
318デフォルトの名無しさん
2020/07/25(土) 05:22:11.92ID:ygqLeqBq 質問です。デリミタが基本的に「/」が選ばれるのなぜですか?慣例だから?
319デフォルトの名無しさん
2020/07/25(土) 08:47:52.57ID:1TMz0fAY 人間というのは楽をしようとする生き物なんだ
320デフォルトの名無しさん
2020/07/25(土) 17:47:34.31ID:bnVhPJSY321デフォルトの名無しさん
2020/07/27(月) 13:00:24.19ID:NlQGNze0 ●Regular Expressionの使用環境
Ruby2.5
●検索か置換か?
置換
●説明
スペースを削除したい。ただしダブルクオーテーション内は処理対象から除外
●対象データ
ABC, DE F,"G HI"
●希望する結果
ABC,DEF,"G HI"
ダブルクオーテーション内以外に対して処理するって結構ありそうだけど見つからないような・・
Ruby2.5
●検索か置換か?
置換
●説明
スペースを削除したい。ただしダブルクオーテーション内は処理対象から除外
●対象データ
ABC, DE F,"G HI"
●希望する結果
ABC,DEF,"G HI"
ダブルクオーテーション内以外に対して処理するって結構ありそうだけど見つからないような・・
322デフォルトの名無しさん
2020/07/27(月) 13:15:08.91ID:GIKub5S5 そのフォーマット通りなのか
あるいは任意でダブルクォーテーションの処理をするのかで変わってくるな
あるいは任意でダブルクォーテーションの処理をするのかで変わってくるな
323デフォルトの名無しさん
2020/07/27(月) 14:36:52.94ID:Dng4VfHm [ ](?![^",\n]*+"(?:,|$))
324デフォルトの名無しさん
2020/07/27(月) 15:27:53.85ID:OciGuojB (?>".*?"|[^"スペース]++)*+\Kスペース
を削除
を削除
325デフォルトの名無しさん
2020/07/28(火) 23:58:50.39ID:dH+Aps1K HTML中に
<a href="/a.html"><img src="test.jpg"></a>
と
<img src="test.jpg">
リンクに囲まれた test.jpg または、画像だけののどちらかがあって。
どちらにも引っかかる正規表現が書けません。
PHPの正規表現キボンヌ
自力では2つの正規表現を書いてしのいでいるので、一つで対応できますか?
現状は
リンクに囲まれた画像
/(^.*)(<a href=".*?>\n*<img .*?test.jpg.*?>\n*<\/a>)(.*$)/s
画像のみ
/(^.*)(<img .*?test.jpg.*?>)(.*$)/s
で対応しています。
<a href="/a.html"><img src="test.jpg"></a>
と
<img src="test.jpg">
リンクに囲まれた test.jpg または、画像だけののどちらかがあって。
どちらにも引っかかる正規表現が書けません。
PHPの正規表現キボンヌ
自力では2つの正規表現を書いてしのいでいるので、一つで対応できますか?
現状は
リンクに囲まれた画像
/(^.*)(<a href=".*?>\n*<img .*?test.jpg.*?>\n*<\/a>)(.*$)/s
画像のみ
/(^.*)(<img .*?test.jpg.*?>)(.*$)/s
で対応しています。
326デフォルトの名無しさん
2020/07/29(水) 01:26:58.01ID:W2ZwK0DF /<img[^>]+test\.jpg[^>]+>/g
JavaScript では、これで両方に一致する。
[^>]+ で、> 以外の文字を、1文字以上。
g で、すべての箇所に一致する
test.jpg だと、. は任意の1文字を表すから、意味が異なる。
ドットという文字に一致させるには、\. とエスケープが必要
JavaScript では、これで両方に一致する。
[^>]+ で、> 以外の文字を、1文字以上。
g で、すべての箇所に一致する
test.jpg だと、. は任意の1文字を表すから、意味が異なる。
ドットという文字に一致させるには、\. とエスケープが必要
327デフォルトの名無しさん
2020/07/29(水) 01:58:17.28ID:yfMsWFOq aタグ含めてマッチさせたいんでね?
それでも単純に|で繋げば済む話だと思うけど
それでも単純に|で繋げば済む話だと思うけど
328デフォルトの名無しさん
2020/07/29(水) 03:04:25.73ID:Qbap9rXN あってもなくてもいいものは末尾に?を付ければいいよ
((<a [^>]++>)?(?:<img[^>]+test\.jpg[^>]+>)(</a>)?)
((<a [^>]++>)?(?:<img[^>]+test\.jpg[^>]+>)(</a>)?)
329デフォルトの名無しさん
2020/07/29(水) 05:46:17.91ID:z6Fnx3oM >>9
これ面白いな。プログラミング授業に採用すべき。
これ面白いな。プログラミング授業に採用すべき。
330デフォルトの名無しさん
2020/07/29(水) 11:18:17.76ID:RU44SEhN >>326
ありがとうございます!
[^>]+ って発想がありませんでした・・。
>>328
ありがとうございます。
++ のところは一つですよね?
こんな感じをベースにやってみようと思います。
https://regexper.com/#%7C%28%28%3Ca%20%5B%5E%3E%5D%2B%3E%29%3F%28%3F%3A%3Cimg%5B%5E%3E%5D%2Btest%5C.jpg%5B%5E%3E%5D%2B%3E%29%28%3C%5C%2Fa%3E%29%3F%29%7C
ありがとうございます!
[^>]+ って発想がありませんでした・・。
>>328
ありがとうございます。
++ のところは一つですよね?
こんな感じをベースにやってみようと思います。
https://regexper.com/#%7C%28%28%3Ca%20%5B%5E%3E%5D%2B%3E%29%3F%28%3F%3A%3Cimg%5B%5E%3E%5D%2Btest%5C.jpg%5B%5E%3E%5D%2B%3E%29%28%3C%5C%2Fa%3E%29%3F%29%7C
331デフォルトの名無しさん
2020/07/29(水) 11:23:00.16ID:d73w3j+s >>325
こういうの正規表現じゃなくcss selectorやxpath使った方が簡単だよ
こういうの正規表現じゃなくcss selectorやxpath使った方が簡単だよ
332デフォルトの名無しさん
2020/07/29(水) 14:14:44.18ID:8IMt+CxM > リンクに囲まれた test.jpg または、画像だけののどちらかがあって
> /(^.*)(<a href=".*?>\n*<img .*?test.jpg.*?>\n*<\/a>)(.*$)/s
> /(^.*)(<img .*?test.jpg.*?>)(.*$)/s
^(?=.*test\.jpg).++$
こういう事では?
> /(^.*)(<a href=".*?>\n*<img .*?test.jpg.*?>\n*<\/a>)(.*$)/s
> /(^.*)(<img .*?test.jpg.*?>)(.*$)/s
^(?=.*test\.jpg).++$
こういう事では?
333325
2020/07/29(水) 14:47:56.12ID:RU44SEhN334デフォルトの名無しさん
2020/07/31(金) 01:03:19.74ID:sgil418T335デフォルトの名無しさん
2020/08/01(土) 06:04:54.43ID:Wz14ZhNZ cssなんですが、
margin:10px;padding:10px;border:1px solid red;backgroun-color:red;font-size:16px;
というものがあったとして、正規表現でborderのプロパティと内容だけを削除できないでしょうか?
欲しい結果どす
margin:10px;padding:10px;backgroun-color:red;font-size:16px;
ちなみにborderの値は
1px red solidの場合もあれば
solid 1px redの場合もあります
つまり、borderプロパティに不随する値を消したいのです(´・ω・`)
margin:10px;padding:10px;border:1px solid red;backgroun-color:red;font-size:16px;
というものがあったとして、正規表現でborderのプロパティと内容だけを削除できないでしょうか?
欲しい結果どす
margin:10px;padding:10px;backgroun-color:red;font-size:16px;
ちなみにborderの値は
1px red solidの場合もあれば
solid 1px redの場合もあります
つまり、borderプロパティに不随する値を消したいのです(´・ω・`)
336デフォルトの名無しさん
2020/08/01(土) 06:13:27.50ID:xL8Di7oE 〜; か、;〜; の、〜の中に、border という文字列が、あれば良いのか?
337デフォルトの名無しさん
2020/08/01(土) 06:32:02.40ID:Wz14ZhNZ どういうことですか?
borderプロパティとその値を削除したい感じです
border(プロパティ):red 1px solid(値);
borderプロパティとその値を削除したい感じです
border(プロパティ):red 1px solid(値);
338デフォルトの名無しさん
2020/08/01(土) 06:38:27.91ID:hnL660kY border[^;\n]++;
339デフォルトの名無しさん
2020/08/01(土) 06:52:53.24ID:GqyTFtiM \rも入れといたほうがいいだろ
340デフォルトの名無しさん
2020/08/01(土) 06:59:35.99ID:GqyTFtiM あとborder-color:〜とかも消えちゃうね
341デフォルトの名無しさん
2020/08/01(土) 07:21:39.09ID:GqyTFtiM あとプロパティじゃなくて値やコメントにborderって入る可能性が無いかな?
\bborder\s*:[^;}\r\n]++;?
ぐらいがいいのではないかな
これでもxx-borderとかプロパティがあったり?(無いだろうけど)
、また値を改行されて書かれたりしたらダメなんだが
\bborder\s*:[^;}\r\n]++;?
ぐらいがいいのではないかな
これでもxx-borderとかプロパティがあったり?(無いだろうけど)
、また値を改行されて書かれたりしたらダメなんだが
342デフォルトの名無しさん
2020/08/01(土) 07:38:14.81ID:GqyTFtiM 処理系がかかれてないので++がダメだったら+に代えるように
343デフォルトの名無しさん
2020/08/01(土) 09:01:52.60ID:Wz14ZhNZ すみません
meryです
meryです
344デフォルトの名無しさん
2020/08/01(土) 12:04:03.32ID:kkqe9vdZ border(-[a-z]+)?:[^;]+;
345デフォルトの名無しさん
2020/08/01(土) 18:09:27.98ID:Wz14ZhNZ ありがとうございます
できましたが、解説サイトありませんか?
記号がヒットしないもんで、、、
できましたが、解説サイトありませんか?
記号がヒットしないもんで、、、
346デフォルトの名無しさん
2020/08/01(土) 18:40:27.24ID:hnL660kY347デフォルトの名無しさん
2020/08/01(土) 19:21:49.80ID:kkqe9vdZ (自分の投稿分だけ)
[]は[]内に挙げた任意の1文字
+は直前の文字だけで構成される文字列,*は0文字以上、+は1文字以上
つまり[a-z]+はa-zの範囲の文字だけで構成される長さ1以上の任意の文字列
?は直前の文字(列)がないものも対象(あってもなくてもいいということになる)
[]内先頭の^は否定
つまり[^;]は;以外の任意の文字
まとめると:の前は
border, border-width等borderファミリーまとめて対象にしている
:の後は:直後〜最初の;までが対象
>>344では:以前にスペースがあると対象にならない
[]は[]内に挙げた任意の1文字
+は直前の文字だけで構成される文字列,*は0文字以上、+は1文字以上
つまり[a-z]+はa-zの範囲の文字だけで構成される長さ1以上の任意の文字列
?は直前の文字(列)がないものも対象(あってもなくてもいいということになる)
[]内先頭の^は否定
つまり[^;]は;以外の任意の文字
まとめると:の前は
border, border-width等borderファミリーまとめて対象にしている
:の後は:直後〜最初の;までが対象
>>344では:以前にスペースがあると対象にならない
348デフォルトの名無しさん
2020/08/01(土) 22:21:06.56ID:Wz14ZhNZ 丁寧にありがとうございます。難しいですね。
border(-[a-z]+)?:の部分はなぜグループ化する必要があるんでしょうか?
border(-[a-z]+)?:の部分はなぜグループ化する必要があるんでしょうか?
349デフォルトの名無しさん
2020/08/01(土) 22:43:25.14ID:LBbA9Kf+350デフォルトの名無しさん
2020/08/01(土) 22:57:20.65ID:Wz14ZhNZ borderとborder-styleなどを対象にする場合、括弧を使うことで不足分を補うというイメージでしょうか?
borderとborder-styleという指定になってるんですね
borderとborder-styleという指定になってるんですね
351デフォルトの名無しさん
2020/08/01(土) 23:05:44.88ID:LBbA9Kf+ >>350
border(-[a-z]+)?: の ? をどこに効かせるか
border-([a-z]+)?: だと - が必須になる(- に ?が効かない)ので border: にマッチしない(border-abcdef: にはマッチする)
正規表現 入門 でググってそれ見ながら ↑のパズルで遊んでみたら?
border(-[a-z]+)?: の ? をどこに効かせるか
border-([a-z]+)?: だと - が必須になる(- に ?が効かない)ので border: にマッチしない(border-abcdef: にはマッチする)
正規表現 入門 でググってそれ見ながら ↑のパズルで遊んでみたら?
352デフォルトの名無しさん
2020/08/01(土) 23:08:11.58ID:oWJPeiSz border-radiusも忘れないであげてください...
353デフォルトの名無しさん
2020/08/01(土) 23:12:41.55ID:+HD/AULr 説明が下手だと良く言われるでしょ?
笑えるくらいグダグダなのなw
笑えるくらいグダグダなのなw
354デフォルトの名無しさん
2020/08/01(土) 23:38:46.09ID:o0eKxhHR >>353
はいどうぞw
はいどうぞw
355デフォルトの名無しさん
2020/08/02(日) 04:53:04.96ID:Q2aVGOnZ Mery(鬼雲の仕様?)なら
border\s*(-[a-z]+)?:[^;]+;
で:前の改行や空白文字も対象にしてくれるけど
エンジンによっては対象にならないし
可能なパターン全てに対応させようと思ったら正規表現メモになってしまう(相当面倒だということ)
どーでもいいけど
[-a-z]か(-[a-z]+)*にした方が良かったか
border-なんとか-かんとか
みたいなのもある?
border\s*(-[a-z]+)?:[^;]+;
で:前の改行や空白文字も対象にしてくれるけど
エンジンによっては対象にならないし
可能なパターン全てに対応させようと思ったら正規表現メモになってしまう(相当面倒だということ)
どーでもいいけど
[-a-z]か(-[a-z]+)*にした方が良かったか
border-なんとか-かんとか
みたいなのもある?
356デフォルトの名無しさん
2020/08/02(日) 07:34:01.59ID:WI1GGX9r 最小一致のやり方を教えて下さい
<h1>aaa</h1><h1>aaa</h1>
最初のh1要素だけ取り出すことはできないでしょうか?
<h1>(*?)</h1>
これではだめです。
>>351
ありがとう
手を動かします
<h1>aaa</h1><h1>aaa</h1>
最初のh1要素だけ取り出すことはできないでしょうか?
<h1>(*?)</h1>
これではだめです。
>>351
ありがとう
手を動かします
357デフォルトの名無しさん
2020/08/02(日) 07:46:47.76ID:afjdMLlX <h1>[^>]+h1>
[^>]+ は、> 以外の文字が、1文字以上
[^>]+ は、> 以外の文字が、1文字以上
358デフォルトの名無しさん
2020/08/02(日) 08:08:51.02ID:7mfh4V7b <h1>(?>.*?</h1>)
<h1>(?>(?s).*?</h1>)
<h1>(?~</h1>)</h1>
<h1><a id="abc">abc</a>
</h1>
<h1>(?>(?s).*?</h1>)
<h1>(?~</h1>)</h1>
<h1><a id="abc">abc</a>
</h1>
359デフォルトの名無しさん
2020/08/02(日) 08:08:54.84ID:SCuZm8dn ^.*?<h1>\K.*?(?=</h1>)
360デフォルトの名無しさん
2020/08/02(日) 08:16:49.14ID:piHYqXfk (?~</?+h1>)(?=</h1>)
361デフォルトの名無しさん
2020/08/02(日) 08:18:05.24ID:1ddBclsD あ、ダメだこれ>>360
362デフォルトの名無しさん
2020/08/02(日) 10:46:18.27ID:WI1GGX9r363デフォルトの名無しさん
2020/08/02(日) 10:54:32.92ID:WI1GGX9r364デフォルトの名無しさん
2020/08/02(日) 10:55:57.37ID:WI1GGX9r 順番に置き換えていくならいいですが、全て置き換えを行う場合
>>357だと出来ないですね
>>357だと出来ないですね
365デフォルトの名無しさん
2020/08/02(日) 11:08:50.52ID:SCuZm8dn 削除
^.*?\K<h1>.*?</h1>(.*)
\1
ABCに置換
ABC\1
^.*?\K<h1>.*?</h1>(.*)
\1
ABCに置換
ABC\1
366デフォルトの名無しさん
2020/08/03(月) 01:53:48.18ID:p6SF3tC+ すべてにマッチする、オプションは無いの?
367デフォルトの名無しさん
2020/08/03(月) 03:15:13.61ID:/ZQCQ5dx368デフォルトの名無しさん
2020/08/05(水) 13:11:50.02ID:zXYtyxDC ●Regular Expressionの使用環境
サクラエディタ
●検索か置換か?
置換
●説明
空白を除去するのに\sで検索してますが
アルファベットの文字間では空白を残したい
●対象データ
ジャッキー チェン:Jackie Chan
●希望する結果
ジャッキーチェン:Jackie Chan
サクラエディタ
●検索か置換か?
置換
●説明
空白を除去するのに\sで検索してますが
アルファベットの文字間では空白を残したい
●対象データ
ジャッキー チェン:Jackie Chan
●希望する結果
ジャッキーチェン:Jackie Chan
369デフォルトの名無しさん
2020/08/05(水) 14:03:13.77ID:xp5DSzK/ スペースの直前直後が[a-zA-Z]ならマッチせず
それ以外ならマッチするという正規表現でいいのかな?
もうちょっと仕様を詰めたほうがいい気がする
John Paul IIの2つ目のスペースは削除?
George W. Bushの2つ目のスペースは削除?
それ以外ならマッチするという正規表現でいいのかな?
もうちょっと仕様を詰めたほうがいい気がする
John Paul IIの2つ目のスペースは削除?
George W. Bushの2つ目のスペースは削除?
370デフォルトの名無しさん
2020/08/05(水) 14:03:44.33ID:UoH2gIZd (?<=[^A-Za-z])\s(?=[^A-Za-z])|(?<=[^A-Za-z])\s(?=[A-Za-z])|(?<=[A-Za-z])\s(?=[^A-Za-z])
371デフォルトの名無しさん
2020/08/05(水) 16:38:08.92ID:zXYtyxDC372デフォルトの名無しさん
2020/08/05(水) 16:57:46.08ID:UoH2gIZd >>371
^\s++|\s++$|(?<=[^A-Za-z])\s(?=[^A-Za-z])|(?<=[^A-Za-z])\s(?=[A-Za-z])|(?<=[A-Za-z])\s(?=[^A-Za-z])
^\s++|\s++$|(?<=[^A-Za-z])\s(?=[^A-Za-z])|(?<=[^A-Za-z])\s(?=[A-Za-z])|(?<=[A-Za-z])\s(?=[^A-Za-z])
373デフォルトの名無しさん
2020/08/05(水) 17:13:59.30ID:xp5DSzK/ ORでは1つで良いような
(?<![a-zA-Z])¥s|¥s(?![a-zA-Z])
(?<![a-zA-Z])¥s|¥s(?![a-zA-Z])
374デフォルトの名無しさん
2020/08/05(水) 20:14:19.67ID:TJuHD2ix ゼロ個でも
\s(?!(?<=[A-Za-z].)(?=[A-Za-z]))
\s(?!(?<=[A-Za-z].)(?=[A-Za-z]))
375デフォルトの名無しさん
2020/08/05(水) 21:50:35.87ID:xp5DSzK/376デフォルトの名無しさん
2020/08/06(木) 11:27:45.13ID:mqEUv0B4 成り立ってるそれ?
377デフォルトの名無しさん
2020/08/06(木) 11:59:29.23ID:04L3Tvl2 \s(?!(?<=[A-Za-z].)[A-Za-z])
肯定先読み要らないよね。ある方が見やすい気がしなくもないけど
肯定先読み要らないよね。ある方が見やすい気がしなくもないけど
378デフォルトの名無しさん
2020/08/06(木) 16:39:38.24ID:LCybI18e 374の「選択子がゼロ個」と「集合の否定」の話じゃなければアサーションを入れ子にする必要もないのですよ
\s(?>(?![A-Za-z])|(?<![A-Za-z].))
\s(?>(?![A-Za-z])|(?<![A-Za-z].))
379デフォルトの名無しさん
2020/08/10(月) 00:32:29.15ID:foQnjRqn ●使用環境
RegEx Lab(iOSアプリ,ICU Regex)
iOSショートカットアプリ
●検索か置換か?
検索
●説明
以下の2パターンのデータから"あいうえお"を取り出す正規表現を教えてください。
自分なりに考えたのですが↓ではうまくいきませんでした。
名前(?::<.+?>|:)(.*?)(?:</a>|$)
ちなみにCotEditorでは↑の正規表現でも検索できました。
●対象データ1
〜
<div class="abcde_abcde">
名前:あいうえお
</div><!--abcde_abcde-->
〜
●対象データ2
〜
<div class="abcde_abcde">
名前:<a href="https://www.google.com">あいうえお</a>
</div><!--abcde_abcde-->
〜
●希望する結果
あいうえお
RegEx Lab(iOSアプリ,ICU Regex)
iOSショートカットアプリ
●検索か置換か?
検索
●説明
以下の2パターンのデータから"あいうえお"を取り出す正規表現を教えてください。
自分なりに考えたのですが↓ではうまくいきませんでした。
名前(?::<.+?>|:)(.*?)(?:</a>|$)
ちなみにCotEditorでは↑の正規表現でも検索できました。
●対象データ1
〜
<div class="abcde_abcde">
名前:あいうえお
</div><!--abcde_abcde-->
〜
●対象データ2
〜
<div class="abcde_abcde">
名前:<a href="https://www.google.com">あいうえお</a>
</div><!--abcde_abcde-->
〜
●希望する結果
あいうえお
380デフォルトの名無しさん
2020/08/10(月) 01:07:48.09ID:F9d2D5aE381デフォルトの名無しさん
2020/08/10(月) 01:16:40.29ID:rwR0rEzu >>379
$が行末にマッチしてないだけなら、単に改行\Rに置き換えてみてもいいし正規表現の頭におまじない(?m)を足してみてもいい
置換じゃなくて検索なら
(?<=名前:<[^>]{0,99}?>).*?(?=</a>)|(?<=名前:)(?!<).*+
$が行末にマッチしてないだけなら、単に改行\Rに置き換えてみてもいいし正規表現の頭におまじない(?m)を足してみてもいい
置換じゃなくて検索なら
(?<=名前:<[^>]{0,99}?>).*?(?=</a>)|(?<=名前:)(?!<).*+
382デフォルトの名無しさん
2020/08/10(月) 01:36:35.46ID:foQnjRqn383デフォルトの名無しさん
2020/08/11(火) 13:59:29.59ID:JW3Ec0IY grepのperl正規表現オプションを使ってURLのホスト名を抽出したいです
https://mevius.5ch.net/test/read.cgi/tech/1568640311/l50
http://www.google.co.jp/
このスレだったら”mevius”
googleなら”www”
「https://」or「http://」と「.」に挟まれた文字列の最短一致でできそうなのですがなぜか上手くいきません
1文字に挟まれたパターンは検索して出てくるのですが、複数文字に挟まれたパターンはあまり出てこなくて、この際はっきりしたいので「〇〇〇と△△△に挟まれた文字列の中身のみを最短一致で抽出」パターンも教えてください
https://mevius.5ch.net/test/read.cgi/tech/1568640311/l50
http://www.google.co.jp/
このスレだったら”mevius”
googleなら”www”
「https://」or「http://」と「.」に挟まれた文字列の最短一致でできそうなのですがなぜか上手くいきません
1文字に挟まれたパターンは検索して出てくるのですが、複数文字に挟まれたパターンはあまり出てこなくて、この際はっきりしたいので「〇〇〇と△△△に挟まれた文字列の中身のみを最短一致で抽出」パターンも教えてください
384デフォルトの名無しさん
2020/08/11(火) 14:15:33.95ID:47EO3/0I385デフォルトの名無しさん
2020/08/11(火) 14:17:58.02ID:oEzBqY+p grep知らずにここに居る人が存在するのか…
386デフォルトの名無しさん
2020/08/11(火) 14:33:07.25ID:JW3Ec0IY >>384
早速ありがとうございます
ですがそのやり方ですとgrepでは抽出できませんでした
△△△は複数の種類の文字ですね言葉足らずでした
正しくは「ABC」と「DEF」に挟まれた文字みたいなものですね
早速ありがとうございます
ですがそのやり方ですとgrepでは抽出できませんでした
△△△は複数の種類の文字ですね言葉足らずでした
正しくは「ABC」と「DEF」に挟まれた文字みたいなものですね
387デフォルトの名無しさん
2020/08/11(火) 14:36:19.90ID:giB5l2E5 $ cat input.txt
https://mevius.5ch.net/test/read.cgi/tech/1568640311/l50
http://www.google.co.jp/
$ grep -Po '(?<=:\/\/).+?(?=\.)' input.txt
mevius
www
https://mevius.5ch.net/test/read.cgi/tech/1568640311/l50
http://www.google.co.jp/
$ grep -Po '(?<=:\/\/).+?(?=\.)' input.txt
mevius
www
388デフォルトの名無しさん
2020/08/11(火) 14:37:41.53ID:47EO3/0I389デフォルトの名無しさん
2020/08/11(火) 14:45:43.81ID:giB5l2E5 pcregrepならキャプチャグループを番号指定して出力可能
$ pcregrep -o1 ':\/\/(.+?)\.' input.txt
$ pcregrep -o1 ':\/\/(.+?)\.' input.txt
390デフォルトの名無しさん
2020/08/11(火) 15:47:36.92ID:JW3Ec0IY391デフォルトの名無しさん
2020/08/11(火) 20:17:56.42ID:Uga1WByL Javaで
setMethod();
getMethod();
setBake();
みたいなgetter,setterは検出したくなく、
Methoda();
Methodb();
bake();
みたいなset, getで始まっていない()付きの文字列を含む
行を正規表現一行で検出するするのはどうしたらいいのですか?
setMethod();
getMethod();
setBake();
みたいなgetter,setterは検出したくなく、
Methoda();
Methodb();
bake();
みたいなset, getで始まっていない()付きの文字列を含む
行を正規表現一行で検出するするのはどうしたらいいのですか?
392デフォルトの名無しさん
2020/08/11(火) 21:07:16.11ID:xo6O5h7F ^(?=.*?\b(?!set|get)[A-Za-z]++\(\);).*
^(?=.*\b(?!set|get)[A-Za-z]+\(\);).*
^(?=.*\b(?!set|get)[A-Za-z]+\(\);).*
393デフォルトの名無しさん
2020/08/11(火) 21:55:37.51ID:Uga1WByL 申し訳ありません。
Methoda() {
Methodb(){
c = z.Methoda().Methodb(a,b)
みたいな行は検索の対象にいれたいのですが
よろしくお願いします。
Methoda() {
Methodb(){
c = z.Methoda().Methodb(a,b)
みたいな行は検索の対象にいれたいのですが
よろしくお願いします。
394デフォルトの名無しさん
2020/08/11(火) 22:14:19.40ID:giB5l2E5 もうちょい目的と仕様をはっきりさせたほうがいいんじゃない?
get/setではじまってない()付きの文字列を含む行なら問題ないけど
get/setではじまってないメソッド定義やメソッド呼び出しをもれなく抽出したいということなら
正規表現だときつい気がする
後者ならコードをパースして使ってるメソッド一覧を出力するようなツールを探したほうがいいかも
get/setではじまってない()付きの文字列を含む行なら問題ないけど
get/setではじまってないメソッド定義やメソッド呼び出しをもれなく抽出したいということなら
正規表現だときつい気がする
後者ならコードをパースして使ってるメソッド一覧を出力するようなツールを探したほうがいいかも
395デフォルトの名無しさん
2020/08/11(火) 22:27:44.94ID:xo6O5h7F ^(?=.*?\b(?!set|get)[A-Za-z]++\(\)).*
396デフォルトの名無しさん
2020/08/11(火) 22:36:31.67ID:P147PBTZ (?<=(?:\n|^|\.))(?<!set|get)[a-zA-Z]+\(
397デフォルトの名無しさん
2020/08/11(火) 22:52:10.25ID:Uga1WByL 引数が無い and setter, getterではないメソッドを含んでいる行です
ひょっとして正規表現内では表現できないかもしれません。
文脈自由レベルでしょうか?
ひょっとして正規表現内では表現できないかもしれません。
文脈自由レベルでしょうか?
398デフォルトの名無しさん
2020/09/20(日) 19:06:52.11ID:shjW7F5c 5chのスレタイはこん感じで入っている
<a href="1599110613/l50">1: ぶっちゃけ始めるのにいい言語て何 part3 (78)</a>
<a href="1545032904/l50">2: 文字コード総合スレ Part12 (95)</a>
<a href="1598112455/l50">3: Rust part9 (198)</a>
<a href="1598336253/l50">4: 小6におすすめな言語 (32)</a>
<a href="1594528940/l50">5: C++相談室 part152 (404)</a>
<a href="1596690797/l50">6: Xamarin Part7 (97)</a>
<a href="1598527450/l50">7: くだすれPython(超初心者用) その50【まず1嫁】 (423)</a>
ここからたとえば「言語」とついたスレタイだけ抽出するのは無理だった
<a href="1599110613/l50">1: ぶっちゃけ始めるのにいい言語て何 part3 (78)</a>
<a href="1598336253/l50">4: 小6におすすめな言語 (32)</a>
<a href="1599110613/l50">1: ぶっちゃけ始めるのにいい言語て何 part3 (78)</a>
<a href="1545032904/l50">2: 文字コード総合スレ Part12 (95)</a>
<a href="1598112455/l50">3: Rust part9 (198)</a>
<a href="1598336253/l50">4: 小6におすすめな言語 (32)</a>
<a href="1594528940/l50">5: C++相談室 part152 (404)</a>
<a href="1596690797/l50">6: Xamarin Part7 (97)</a>
<a href="1598527450/l50">7: くだすれPython(超初心者用) その50【まず1嫁】 (423)</a>
ここからたとえば「言語」とついたスレタイだけ抽出するのは無理だった
<a href="1599110613/l50">1: ぶっちゃけ始めるのにいい言語て何 part3 (78)</a>
<a href="1598336253/l50">4: 小6におすすめな言語 (32)</a>
399デフォルトの名無しさん
2020/09/20(日) 20:06:08.38ID:XyOg3AIQ400デフォルトの名無しさん
2020/09/20(日) 23:02:18.72ID:ylbIOeZ5 JavaScript では、これで複数行マッチ(g)できた
/<a[^>]+>.*言語.*<\/a>/g
<a で始まって、> 以外の文字が、1文字以上続いて、>
言語の前後に、.*
<\/a> で終わる
他には、Ruby でスクレイピングすれば?
/<a[^>]+>.*言語.*<\/a>/g
<a で始まって、> 以外の文字が、1文字以上続いて、>
言語の前後に、.*
<\/a> で終わる
他には、Ruby でスクレイピングすれば?
401デフォルトの名無しさん
2020/09/21(月) 00:25:21.75ID:18fwmJUF >>400
おかしいな、それでうまくいかなかったのに
と思ったら入ってくるHTMLソースに改行がないようだ
</a>のあとに改行入れるとうまくいくように見えるけど、HTMLソースがおかしくなる
正規表現以前の問題だったわ
おかしいな、それでうまくいかなかったのに
と思ったら入ってくるHTMLソースに改行がないようだ
</a>のあとに改行入れるとうまくいくように見えるけど、HTMLソースがおかしくなる
正規表現以前の問題だったわ
402400
2020/09/21(月) 02:18:58.27ID:+seX53Ud 別に抜き出すだけなら、
一旦、</a> の後ろに、改行を追加してから、正規表現を使えば?
それか、HTML をコピーしてから、やるとか
一旦、</a> の後ろに、改行を追加してから、正規表現を使えば?
それか、HTML をコピーしてから、やるとか
403デフォルトの名無しさん
2020/09/21(月) 04:00:13.04ID:fovUI165 "/(<a(?>[^>]+)>(?>[^<]*?言語[^<]*)<\/a>)(?:<a(?![^<]*言語)(?>[^<]+)<\/a>)*/$1/g"
404デフォルトの名無しさん
2020/09/21(月) 04:10:48.96ID:fovUI165 "/<a(?![^<]*言語)(?>[^<]+)<\/a>//g"
405400
2020/09/21(月) 05:27:30.09ID:+seX53Ud Ruby, Nokogiri で、スクレイピングしたら、
require 'open-uri'
require 'nokogiri'
# プログラム技術@スレッド一覧
url = "https://mevius.5ch.net/tech/subback.html"
doc = Nokogiri::HTML( open( url ) )
# 「言語」という単語が含まれる、タイトルを表示する
ary = doc.css( "#trad > a" ).map { |elem| elem.content }
.select { |title| title.include? "言語" }
puts ary
出力
6: 次世代言語21 Go Nim Rust Swift Kotlin TypeScript (330)
10: 日本語プログラミング言語『なでしこ』スレ6.1c2ch.net (108)
以下略
require 'open-uri'
require 'nokogiri'
# プログラム技術@スレッド一覧
url = "https://mevius.5ch.net/tech/subback.html"
doc = Nokogiri::HTML( open( url ) )
# 「言語」という単語が含まれる、タイトルを表示する
ary = doc.css( "#trad > a" ).map { |elem| elem.content }
.select { |title| title.include? "言語" }
puts ary
出力
6: 次世代言語21 Go Nim Rust Swift Kotlin TypeScript (330)
10: 日本語プログラミング言語『なでしこ』スレ6.1c2ch.net (108)
以下略
406デフォルトの名無しさん
2020/09/21(月) 15:36:21.19ID:K0hBqhJG 冗談抜きでそんな無駄な努力するよりxpathとかそっち系おすすめするぞ
407デフォルトの名無しさん
2020/09/21(月) 16:25:39.02ID:+MA8+KhA 単純なスクレイピングはcurl+pupが楽
$ curl -s https://mevius.5ch.net/tech/subback.html | pup '#trad > a' text{} | grep 言語 | head -5
$ curl -s https://mevius.5ch.net/tech/subback.html | pup '#trad > a' text{} | grep 言語 | head -5
408400
2020/09/21(月) 22:36:13.18ID:+seX53Ud >>405
のopen-uri を、下のように、外部コマンドのcurl にも出来るけど、
普通は、わざわざ外部コマンドを呼ばない
url = "http〜"
doc = Nokogiri::HTML( open( url ) )
html = `curl http〜`
doc = Nokogiri::HTML( html )
のopen-uri を、下のように、外部コマンドのcurl にも出来るけど、
普通は、わざわざ外部コマンドを呼ばない
url = "http〜"
doc = Nokogiri::HTML( open( url ) )
html = `curl http〜`
doc = Nokogiri::HTML( html )
409デフォルトの名無しさん
2020/09/22(火) 15:43:36.39ID:fUgbeHE5 ●Regular Expressionの使用環境
サクラエディタ
●検索か置換か?
置換
●説明
httpを含まない行の/を年に置き換えたい
●対象データ
https://5ch.net/
2020/9
●希望する結果
https://5ch.net/
2020年9
サクラエディタ
●検索か置換か?
置換
●説明
httpを含まない行の/を年に置き換えたい
●対象データ
https://5ch.net/
2020/9
●希望する結果
https://5ch.net/
2020年9
410デフォルトの名無しさん
2020/09/22(火) 16:23:41.31ID:hefdb5Yb こんなもんでもよろしいでしょうか。
あんまりうまくないと思いますが。
よろしくお願いいたします。
置換前
^(?!http)([0-9]{4})(/)
置換後
$1年
あんまりうまくないと思いますが。
よろしくお願いいたします。
置換前
^(?!http)([0-9]{4})(/)
置換後
$1年
411デフォルトの名無しさん
2020/09/22(火) 16:33:21.65ID:fUgbeHE5 >>410
ありがとうございます。うまくいきました。
ありがとうございます。うまくいきました。
412デフォルトの名無しさん
2020/09/23(水) 20:03:55.75ID:itvZvUM6413デフォルトの名無しさん
2020/09/25(金) 14:10:58.84ID:3NF+8528 ●Regular Expressionの使用環境
Linux
awkとか、sed。
目的が置換なので、コマンドはなんでも構いません。
●検索か置換か?
置換
●説明
= 任意の文字列 :
を置き換えたい
※前後に半角スペースあり。
●対象データ
hogeghoe = type: furagura
mogemoge = syntax: mojamoja
●希望する結果
hogeghoe type: furagura
mogemoge syntax: mojamoja
※スペースで置き換えた例
よろしくお願いいたします。
Linux
awkとか、sed。
目的が置換なので、コマンドはなんでも構いません。
●検索か置換か?
置換
●説明
= 任意の文字列 :
を置き換えたい
※前後に半角スペースあり。
●対象データ
hogeghoe = type: furagura
mogemoge = syntax: mojamoja
●希望する結果
hogeghoe type: furagura
mogemoge syntax: mojamoja
※スペースで置き換えた例
よろしくお願いいたします。
414デフォルトの名無しさん
2020/09/25(金) 14:14:55.55ID:3NF+8528 >>413
取り消します。精査する前に書き込んでおり
間違いがございました。すいません。
●Regular Expressionの使用環境
Linux
awkとか、sed。
目的が置換なので、コマンドはなんでも構いません。
●検索か置換か?
置換
●説明
= 任意の文字列 :
を置き換えたい
※前後に半角スペースあり。
●対象データ
hogeghoe = type: fuga:fuga
mogemoge = syntax: moja:moja
※置換目的のコロンの後ろにさらにコロンがある場合があります。
=から「次の最初のコロン」までが置換対象です。
●希望する結果
hogeghoe fuga:fuga
mogemoge moja:moja
※スペースで置き換えた例
よろしくお願いいたします。
取り消します。精査する前に書き込んでおり
間違いがございました。すいません。
●Regular Expressionの使用環境
Linux
awkとか、sed。
目的が置換なので、コマンドはなんでも構いません。
●検索か置換か?
置換
●説明
= 任意の文字列 :
を置き換えたい
※前後に半角スペースあり。
●対象データ
hogeghoe = type: fuga:fuga
mogemoge = syntax: moja:moja
※置換目的のコロンの後ろにさらにコロンがある場合があります。
=から「次の最初のコロン」までが置換対象です。
●希望する結果
hogeghoe fuga:fuga
mogemoge moja:moja
※スペースで置き換えた例
よろしくお願いいたします。
415デフォルトの名無しさん
2020/09/25(金) 14:24:47.87ID:q10QaMUD >>414
sed 's/ =[^:]*://g'
sed 's/ =[^:]*://g'
416デフォルトの名無しさん
2020/09/25(金) 16:57:28.24ID:3NF+8528417デフォルトの名無しさん
2020/09/25(金) 21:14:34.14ID:9rvIESf7418デフォルトの名無しさん
2020/09/25(金) 22:49:57.38ID:rXEBHfdh ●使用環境:RegEx Lab(iOSアプリ,ICU Regex)
●検索か置換か?:検索
●説明:時間毎の内容を取り出したいです。自分でも考えてみたのですが、(?m)(?<=\d{1,2}:\d{2}\r)([\s\S]*?)\r ではAt〜Mediaまで取得できませんでした。
補足として、各内容の前後には必ず時間と空白行が挿入されています。ただし、テキストにも空白行が挿入されている場合があります。ちなみに日付毎にファイルが分かれているため、対象データ最上部の日付が途中に挿入されることはありません。
●対象データ
25 September 2020
=================
8:05
テキスト1
10:44
テキスト2
At: スポット名: 位置情報・座標
Tags: タグ1, タグ2
Media: 123abcdefg.jpg
Media: hijklmn456.png
●希望する結果
○マッチ1
テキスト1
○マッチ2
テキスト2
At: スポット名: 位置情報・座標
Tags: タグ1, タグ2
Media: 123abcdefg.jpg
Media: hijklmn456.png
●検索か置換か?:検索
●説明:時間毎の内容を取り出したいです。自分でも考えてみたのですが、(?m)(?<=\d{1,2}:\d{2}\r)([\s\S]*?)\r ではAt〜Mediaまで取得できませんでした。
補足として、各内容の前後には必ず時間と空白行が挿入されています。ただし、テキストにも空白行が挿入されている場合があります。ちなみに日付毎にファイルが分かれているため、対象データ最上部の日付が途中に挿入されることはありません。
●対象データ
25 September 2020
=================
8:05
テキスト1
10:44
テキスト2
At: スポット名: 位置情報・座標
Tags: タグ1, タグ2
Media: 123abcdefg.jpg
Media: hijklmn456.png
●希望する結果
○マッチ1
テキスト1
○マッチ2
テキスト2
At: スポット名: 位置情報・座標
Tags: タグ1, タグ2
Media: 123abcdefg.jpg
Media: hijklmn456.png
419デフォルトの名無しさん
2020/09/26(土) 02:18:28.42ID:Xs9MiFl7 とりあえず鬼雲なら
\d\d?:\d\d\n(([^\n]+\n)+)
で\1なり$1なりで取り出せるけど
どー使うのかしらねーけど改行に続く時刻消せばいいんじゃねw
\d\d?:\d\d\n(([^\n]+\n)+)
で\1なり$1なりで取り出せるけど
どー使うのかしらねーけど改行に続く時刻消せばいいんじゃねw
420デフォルトの名無しさん
2020/09/26(土) 07:24:38.50ID:QW/S7GaB \d\d?:\d\d\n\K((.(?!^\d\d?:\d\d))+\n)+
マッチに時間の直前の空行まで含めるのか?含まないのか?
テキスト終端(例だとテキスト1\n 456.png\n)の改行文字を含めるのか?含まないのか?
マッチがどこまでなのか曖昧
2段階になるけど一旦時刻をテキスト中に現れない文字に置換すれば簡単に出来る
^\d\d?:\d\d → ★
[^★]+
時刻の直前の空行を含まないのなら
\n\d\d?:\d\d → ★
テキスト終端の改行を(ry
\n\n\d\d?:\d\d → ★
マッチに時間の直前の空行まで含めるのか?含まないのか?
テキスト終端(例だとテキスト1\n 456.png\n)の改行文字を含めるのか?含まないのか?
マッチがどこまでなのか曖昧
2段階になるけど一旦時刻をテキスト中に現れない文字に置換すれば簡単に出来る
^\d\d?:\d\d → ★
[^★]+
時刻の直前の空行を含まないのなら
\n\d\d?:\d\d → ★
テキスト終端の改行を(ry
\n\n\d\d?:\d\d → ★
421デフォルトの名無しさん
2020/09/26(土) 19:21:20.61ID:aEJhlUXF422デフォルトの名無しさん
2020/09/26(土) 19:40:36.95ID:5brst4gY (?m)(?<=^\d{1,2}:\d{2}(?:\r\n|(?<!\r)\n|\r(?!\n)))^[\s\S]*?(?=(?:\r\n|(?<!\r)\n|\r(?!\n))+\d{1,2}:\d{2}(?:\r\n|(?<!\r)\n|\r(?!\n))|(?:\r\n|(?<!\r)\n|\r(?!\n))*\z)
423デフォルトの名無しさん
2020/09/26(土) 20:25:49.24ID:W0BkzYxL こういう長い正規表現てやっぱ遅くなったりするの?
424デフォルトの名無しさん
2020/09/26(土) 20:47:28.01ID:5brst4gY これでよかったっぽい
(?m)(?<=^\d{1,2}:\d{2}(?:\r?\n|\r))^[\s\S]*?(?=(?:\r?\n|\r)+\d{1,2}:\d{2}(?:\r?\n|\r)|(?:\r?\n|\r)*\z)
(?m)(?<=^\d{1,2}:\d{2}(?:\r?\n|\r))^[\s\S]*?(?=(?:\r?\n|\r)+\d{1,2}:\d{2}(?:\r?\n|\r)|(?:\r?\n|\r)*\z)
425デフォルトの名無しさん
2020/09/26(土) 20:48:16.86ID:5brst4gY426デフォルトの名無しさん
2020/09/26(土) 20:52:05.12ID:yw3DqGjj 長い短いではなく、試行回数が多い記述(行ったり戻ったり何度もやり直すもの)が遅い
そういうのは逆に記述を詳しくしたりして長くするほうが速い
そういうのは逆に記述を詳しくしたりして長くするほうが速い
427デフォルトの名無しさん
2020/09/26(土) 21:02:00.75ID:aEJhlUXF428デフォルトの名無しさん
2020/09/26(土) 21:08:10.61ID:GBugeZhr >>416
正規表現のデフォルトは、貪欲・greedy・最長一致だから、
非貪欲・reluctant・最短一致にしたい場合に使う。? と同じ
[^x]*、x以外の文字を、0個以上
[^x]+、x以外の文字を、1個以上
Ruby では、
src = "12x34x56"
p src[ /.*x/ ] #=> 12x34x
p src[ /.*?x/ ] #=> 12x
p src[ /[^x]*x/ ] #=> 12x
正規表現のデフォルトは、貪欲・greedy・最長一致だから、
非貪欲・reluctant・最短一致にしたい場合に使う。? と同じ
[^x]*、x以外の文字を、0個以上
[^x]+、x以外の文字を、1個以上
Ruby では、
src = "12x34x56"
p src[ /.*x/ ] #=> 12x34x
p src[ /.*?x/ ] #=> 12x
p src[ /[^x]*x/ ] #=> 12x
429デフォルトの名無しさん
2020/09/26(土) 21:51:29.79ID:awo63W4n >>426
行ったり戻ったりはないんじゃない?
行ったり戻ったりはないんじゃない?
430デフォルトの名無しさん
2020/09/26(土) 22:57:54.77ID:U+G6yEte431デフォルトの名無しさん
2020/09/27(日) 04:53:12.79ID:ICi3HfJX \d{1,2}なら\d\d?
\d{2}なら\d\d
の方が短く済むから2桁以下なら無駄
\d{2}なら\d\d
の方が短く済むから2桁以下なら無駄
432デフォルトの名無しさん
2020/09/27(日) 05:56:53.69ID:nMBRMM6J それは見易さと短さのどちらを優先するかによる
短いだけが正義では無い
2つ程度で見易いもクソも…と思うかも知れないが慣れない者にとっては数字の方が見易いらしい
俺は断然\d\d?派だが
でもこれは(?:\r?\n|\r)→(?:\r\n?|\n)
同じ意味だが
\r
\r\n
\n
をどう表すか?ってことだから後者のように前方を固定した方が分かり易いと思う
RtoLが関係してたりするのだろうか?
短いだけが正義では無い
2つ程度で見易いもクソも…と思うかも知れないが慣れない者にとっては数字の方が見易いらしい
俺は断然\d\d?派だが
でもこれは(?:\r?\n|\r)→(?:\r\n?|\n)
同じ意味だが
\r
\r\n
\n
をどう表すか?ってことだから後者のように前方を固定した方が分かり易いと思う
RtoLが関係してたりするのだろうか?
433デフォルトの名無しさん
2020/09/27(日) 06:00:47.57ID:Y+KxHJb0 今どき\rだけとか見ないし\r?\nで良くね? 駄目?
434デフォルトの名無しさん
2020/09/27(日) 20:03:40.48ID:+P5c8fwT ●Regular Expressionの使用環境
c# .net Framework 4.8
●検索か置換か?
検索
●説明
「,」区切りの2桁の文字列を全て取得したい(Split関数でなく)。
●対象データ
04,05,28
●希望する結果
04
05
28
●補足
現在使っている正規表現は右です (\d{2})(?:,(\d{2}))*
これを使うと、対象となる2桁の数字のうち、最初と最後のものしか取得できません
対象データが4個以上でも同様です
c# .net Framework 4.8
●検索か置換か?
検索
●説明
「,」区切りの2桁の文字列を全て取得したい(Split関数でなく)。
●対象データ
04,05,28
●希望する結果
04
05
28
●補足
現在使っている正規表現は右です (\d{2})(?:,(\d{2}))*
これを使うと、対象となる2桁の数字のうち、最初と最後のものしか取得できません
対象データが4個以上でも同様です
435411
2020/09/27(日) 20:26:03.04ID:qo22866j 以前 >>409 で質問し解答を頂いた者です。
内容は同じなんですが、この置換を他のパターンでも応用したく再度質問致します。
●Regular Expressionの使用環境
サクラエディタ
●検索か置換か?
置換
●説明
◆を含まない行の▲を■に置き換えたい
◆▲■は任意の文字列で、文字数も決まっていません。
●対象データ
Sst68▲h4◆
DRkPP2▲V
NN▲◆9K12XV▲
G▲RL88▲A7
●希望する結果
Sst68▲h4◆
DRkPP2■V
NN▲◆9K12XV▲
G■RL88■A7
どうぞよろしくお願いいたします。
内容は同じなんですが、この置換を他のパターンでも応用したく再度質問致します。
●Regular Expressionの使用環境
サクラエディタ
●検索か置換か?
置換
●説明
◆を含まない行の▲を■に置き換えたい
◆▲■は任意の文字列で、文字数も決まっていません。
●対象データ
Sst68▲h4◆
DRkPP2▲V
NN▲◆9K12XV▲
G▲RL88▲A7
●希望する結果
Sst68▲h4◆
DRkPP2■V
NN▲◆9K12XV▲
G■RL88■A7
どうぞよろしくお願いいたします。
436デフォルトの名無しさん
2020/09/27(日) 21:00:31.89ID:7/tRzxCb >>430
極端な例だろうけど4倍も差が出るのか
極端な例だろうけど4倍も差が出るのか
437デフォルトの名無しさん
2020/09/27(日) 21:15:26.41ID:5NvF/cEJ >>434
(¥d{2}),?
(¥d{2}),?
438デフォルトの名無しさん
2020/09/27(日) 22:52:42.77ID:+P5c8fwT439デフォルトの名無しさん
2020/09/27(日) 23:09:03.39ID:5NvF/cEJ440デフォルトの名無しさん
2020/09/27(日) 23:09:42.50ID:PP0FbEmI441デフォルトの名無しさん
2020/09/27(日) 23:11:27.15ID:PP0FbEmI あ、そのリンク先の表現でのことじゃなく一般的な話としてのことなので、念のため
442デフォルトの名無しさん
2020/09/27(日) 23:23:38.28ID:+P5c8fwT >>439
おかげさまで出来ました。ありがとうございます
おかげさまで出来ました。ありがとうございます
443デフォルトの名無しさん
2020/09/28(月) 00:15:40.71ID:KUcib4mR 数年前に某技術系Q&Aサイト全体が30分以上応答不能になったことがあったけど、アレもbacktrack絡みの正規表現処理(に高負荷をもたらす投稿)がトリガーだったはず
444デフォルトの名無しさん
2020/09/28(月) 00:39:03.54ID:HqyKtYng Jane系のNGEx,ReplaceStr.txtの正規表現で酷いものが投稿されることがある
よく吟味しないと
対象スレ(ちょっと長いスレとか)によってはだんまりとか発生する
よく吟味しないと
対象スレ(ちょっと長いスレとか)によってはだんまりとか発生する
445デフォルトの名無しさん
2020/09/28(月) 05:18:56.57ID:QIpyCS2B446デフォルトの名無しさん
2020/09/28(月) 05:43:11.14ID:9VrOlQkL バックトラックは対象が簡単に一致するものしか無いのであればそれほど気を使わなくても良いが
一致しないものがある場合 一致しない に至るまでに全パターンを試すから
その挙動を必要最小限に抑えたものとそうでないものとでの試行数は桁違い
対象が長くなれば数倍どころでは済まない
大抵の場合、人が確認する際のロジックを再現するのが1番効率が良い
NGEx.txtを晒すスレ7
http://jane2ch.net/test/read.cgi/community/1497272912/340
(<br>.*){20} 49194006ms 激重
^(.*?<br>){20} *1570733ms
^(?:(?:(?!<br>).)*<br>){20} ****2202ms 軽い
^(?>.*?<br>){20} ****1784ms もっと軽い
一致しないものがある場合 一致しない に至るまでに全パターンを試すから
その挙動を必要最小限に抑えたものとそうでないものとでの試行数は桁違い
対象が長くなれば数倍どころでは済まない
大抵の場合、人が確認する際のロジックを再現するのが1番効率が良い
NGEx.txtを晒すスレ7
http://jane2ch.net/test/read.cgi/community/1497272912/340
(<br>.*){20} 49194006ms 激重
^(.*?<br>){20} *1570733ms
^(?:(?:(?!<br>).)*<br>){20} ****2202ms 軽い
^(?>.*?<br>){20} ****1784ms もっと軽い
447435
2020/09/28(月) 15:22:21.72ID:R3xf3P8N448デフォルトの名無しさん
2020/09/28(月) 18:16:12.67ID:RQEq0dPl >>435
(?:^(?!.*◆)|\G(?!\A))(.*?)▲ → $1■
(?:^(?!.*◆)|\G(?!\A))(.*?)▲ → $1■
449デフォルトの名無しさん
2020/09/28(月) 18:54:06.13ID:R3xf3P8N >>448
出来ました!素晴らしいです!マジ感謝です!ありがとうございました。
出来ました!素晴らしいです!マジ感謝です!ありがとうございました。
450デフォルトの名無しさん
2020/10/21(水) 20:12:01.53ID:nvjx5i9I 一文字だけで改行するのを
NGにするには
どうしたらいい?
NGにするには
どうしたらいい?
451デフォルトの名無しさん
2020/10/21(水) 20:18:35.54ID:+qN3TxkM >>450
テンプレを読んで出直しましょう
テンプレを読んで出直しましょう
452デフォルトの名無しさん
2020/11/06(金) 11:29:16.13ID:xeNq05z2 oniguruma6.9.6 Windows10のVS2019で64bit版だとtestc.exeが無言で終了する、32bitだと正常。
Winodws7でVS2015U3だと64bitでも32bitでも正常に動作する。
これ、以前からWindows64bitが鬼門だなあ
Winodws7でVS2015U3だと64bitでも32bitでも正常に動作する。
これ、以前からWindows64bitが鬼門だなあ
453デフォルトの名無しさん
2020/11/10(火) 19:15:09.53ID:aUuUQimA ●PowerShell
●置換
●テキストファイル内の「WrtCookie=」で始まる行の値を「WrtCookie=」に置換する
●「WrtCookie=」で始まる行
現在のコマンド
$input = '^(WrtCookie=).+$'
$replacement = '$1'
$file_contents = $(Get-Content $filepath) -replace $input, $replacement
結果
テキストファイル内の全行が出鱈目な文字列に置換されます
たとえば「$1[$1W$1I$1N$1D$1O$1W$1]$1」など
よろしくお願いします
●置換
●テキストファイル内の「WrtCookie=」で始まる行の値を「WrtCookie=」に置換する
●「WrtCookie=」で始まる行
現在のコマンド
$input = '^(WrtCookie=).+$'
$replacement = '$1'
$file_contents = $(Get-Content $filepath) -replace $input, $replacement
結果
テキストファイル内の全行が出鱈目な文字列に置換されます
たとえば「$1[$1W$1I$1N$1D$1O$1W$1]$1」など
よろしくお願いします
454デフォルトの名無しさん
2020/11/10(火) 21:00:25.97ID:UHXHz0W1455デフォルトの名無しさん
2020/11/11(水) 00:09:52.12ID:tbqNNnPd >>454
書き込む前にたくさんググりましたが、ダメでした
書き込む前にたくさんググりましたが、ダメでした
456 【大凶】
2020/11/11(水) 01:27:50.51ID:zRgJ3mqg >>453
変数名 input を regexp とかに変えれば上手くいくはず
input は「自動変数」として設定済
https://docs.microsoft.com/powershell/module/microsoft.powershell.core/about/about_automatic_variables
変数名 input を regexp とかに変えれば上手くいくはず
input は「自動変数」として設定済
https://docs.microsoft.com/powershell/module/microsoft.powershell.core/about/about_automatic_variables
457デフォルトの名無しさん
2020/11/11(水) 02:35:05.41ID:wa6LgG/F >>453
俺のところじゃ、そのままでも正常だけどなあ(win7だからか? PS ver.5.1)
その3行だけじゃあ表示も出力もされないので
$file_contents
を最後に追加した
その入力ってJane系のiniファイル(SJIS)だよね?
ファイルに出力もして確認してみた
(デフォではUnicode16になっちゃうのでout-fileでencoding指定)
俺のところじゃ、そのままでも正常だけどなあ(win7だからか? PS ver.5.1)
その3行だけじゃあ表示も出力もされないので
$file_contents
を最後に追加した
その入力ってJane系のiniファイル(SJIS)だよね?
ファイルに出力もして確認してみた
(デフォではUnicode16になっちゃうのでout-fileでencoding指定)
458デフォルトの名無しさん
2020/11/11(水) 05:21:46.13ID:yU9bVv8n Windows 10、PSVersion 5.1 では、
input という名前が、ダメ!
input という名前が、ダメ!
459デフォルトの名無しさん
2020/11/11(水) 19:56:31.19ID:tbqNNnPd460デフォルトの名無しさん
2020/11/11(水) 22:49:04.53ID:yU9bVv8n VSCode を使っていれば、白色になる・注意されるから、おかしいとすぐに分かる
まあ、echo などのエイリアスも、白くなるけど
まあ、echo などのエイリアスも、白くなるけど
461デフォルトの名無しさん
2020/12/12(土) 00:58:58.79ID:c3naq2mv 質問
abc
を
a,b,c
に一発で変換する正規表現を教えてください!
abc
を
a,b,c
に一発で変換する正規表現を教えてください!
462デフォルトの名無しさん
2020/12/12(土) 07:54:00.68ID:hjoAkuIf (?!^|$) → ,
463デフォルトの名無しさん
2020/12/12(土) 09:13:39.74ID:weC8GZqi 461じゃないけど、知らなかった。
行頭じゃない&行末じゃない
だけ言えば字間全てに入れてくれるんだ。
行頭じゃない&行末じゃない
だけ言えば字間全てに入れてくれるんだ。
464デフォルトの名無しさん
2020/12/12(土) 09:45:07.71ID:DbQnMcwq s//,/g
だと、,a,b,c,になる
だと、,a,b,c,になる
465デフォルトの名無しさん
2020/12/12(土) 10:10:46.24ID:c3naq2mv >>462
ありがとうございます!
ありがとうございます!
466デフォルトの名無しさん
2020/12/15(火) 08:04:57.95ID:RAwP5vtJ ●Regular Expressionの使用環境
Perl5
●検索か置換か?
検索
●説明
文字列中のX,YY,ZZZのどれかが最初にあるまでのX,YY,ZZZを含む抽出
●対象データ
ABXCDXEFYYGH
ABYCZZZDXEFYYGH
ABCDXXGHZZ
●希望する結果
ABX
ABYCZZZ
ABCDX
お願いします
Perl5
●検索か置換か?
検索
●説明
文字列中のX,YY,ZZZのどれかが最初にあるまでのX,YY,ZZZを含む抽出
●対象データ
ABXCDXEFYYGH
ABYCZZZDXEFYYGH
ABCDXXGHZZ
●希望する結果
ABX
ABYCZZZ
ABCDX
お願いします
467デフォルトの名無しさん
2020/12/15(火) 08:15:41.96ID:M4wr588R >>466
($out) = ($in =~ /(.*?(?:X|YY|ZZZ))/)
($out) = ($in =~ /(.*?(?:X|YY|ZZZ))/)
468デフォルトの名無しさん
2020/12/15(火) 08:17:29.03ID:cXhQAKUm469デフォルトの名無しさん
2020/12/15(火) 08:49:36.46ID:RAwP5vtJ470デフォルトの名無しさん
2020/12/19(土) 09:53:24.06ID:YTpQ8Jg0 ublacklistでPinterestをブロックする正規表現教えて下さい
471デフォルトの名無しさん
2021/01/11(月) 15:03:41.29ID:A5mldiyH 行末以外の改行を任意の一文字(今回はアットマーク)に置換したいのですが可能でしょうか?
改行コードは、crもlfもcrlfも混じってるものとしてお願いしたいです。
改行コードは、crもlfもcrlfも混じってるものとしてお願いしたいです。
472デフォルトの名無しさん
2021/01/11(月) 15:10:21.63ID:WVZOdukT473デフォルトの名無しさん
2021/01/11(月) 15:31:25.19ID:zqhSwaSS 初学者なのでうまく伝わるか心配ですが、 固定長で末尾に改行が入っているレコードファイルを扱っています
その中で、末尾だけでなくレコード中にも改行コードが含まれるようなデータがあり、それを置換したいといった具合です。
UNIX上での話なので、Perlやsedで置換できればと思います。
よろしくお願いいたします。
その中で、末尾だけでなくレコード中にも改行コードが含まれるようなデータがあり、それを置換したいといった具合です。
UNIX上での話なので、Perlやsedで置換できればと思います。
よろしくお願いいたします。
474デフォルトの名無しさん
2021/01/11(月) 15:41:19.51ID:8i1ZTkbL sedはデフォルト行ベースなので改行コードを全部置換すればいい
475デフォルトの名無しさん
2021/01/11(月) 15:43:13.55ID:92N2rfT4 /[\r\n]++(?!$)/@/g
こんな感じじゃね?分からんけど
こんな感じじゃね?分からんけど
476デフォルトの名無しさん
2021/01/11(月) 16:15:14.39ID:rLqIFFRR s/\r?\n/@/gm;
どうよ?
どうよ?
477デフォルトの名無しさん
2021/01/11(月) 16:20:44.13ID:A2M5zvGV 固定長ごとに出てくる改行以外の改行ってことじゃね
改行含めて80文字固定長なら80文字目や160文字目以外の37文字目や53文字目に出てくる改行
改行含めて80文字固定長なら80文字目や160文字目以外の37文字目や53文字目に出てくる改行
478デフォルトの名無しさん
2021/01/11(月) 17:26:33.52ID:8i1ZTkbL あーすまんそういうことか
それだと固定長単位に読み取って置換と出力のループかな
while read -N10 line || [ "$line" ]; do
echo "$line" | tr -d '¥r¥n'
echo
done < input.txt
それだと固定長単位に読み取って置換と出力のループかな
while read -N10 line || [ "$line" ]; do
echo "$line" | tr -d '¥r¥n'
echo
done < input.txt
479デフォルトの名無しさん
2021/01/11(月) 17:59:11.32ID:Op1S7Ai1480デフォルトの名無しさん
2021/01/11(月) 18:31:58.04ID:RwOnRvzI 改行コードは、cr・lf・crlf の3種類あるのか?
固定長の末尾の改行の後には、何が入っている?
ヌル文字か?
例えば、100バイトの固定長で、内容が80バイトなら、
残りの20バイトには、何が入っている?
それとも、内容の80バイトの部分だけが、渡ってくるのか?
固定長の末尾の改行の後には、何が入っている?
ヌル文字か?
例えば、100バイトの固定長で、内容が80バイトなら、
残りの20バイトには、何が入っている?
それとも、内容の80バイトの部分だけが、渡ってくるのか?
481デフォルトの名無しさん
2021/01/11(月) 18:43:53.19ID:5PaUweSP CR なんとかReturn
LF LineFeed
CRLF なんとかReturnLineFeed
LF LineFeed
CRLF なんとかReturnLineFeed
482デフォルトの名無しさん
2021/01/11(月) 20:39:57.39ID:F0XanEVZ echo -en "abcde
a\ncde
a\rcde
a\r\nde
abcdef
a\ncdef
a\nc" |
sed -re ':b;y/\r\n/@@/;/.{5}/!{N;bb};'
a\ncde
a\rcde
a\r\nde
abcdef
a\ncdef
a\nc" |
sed -re ':b;y/\r\n/@@/;/.{5}/!{N;bb};'
483デフォルトの名無しさん
2021/01/11(月) 21:38:18.11ID:6WXFekQD484デフォルトの名無しさん
2021/01/12(火) 17:48:10.93ID:fqpU06Zc >>481 carriage
485デフォルトの名無しさん
2021/01/14(木) 20:15:05.94ID:uu7IOQ/X >>479
解決しましたか?
解決しましたか?
486デフォルトの名無しさん
2021/01/14(木) 20:19:20.00ID:eDcISF88 うざw
487デフォルトの名無しさん
2021/01/15(金) 04:04:23.16ID:VxNLJyBo 先日質問させていただいた471です。
色々と試した結果、
perl -pe ‘s/¥r/@/g $INFILE | perl -pe ‘s/¥n/@/g > $TMPFILE
cat $TMPFILE | perl -e ‘while(read(STDIN, $tmp , 100)){print $tmp, “¥n”}’ > $OUTFILE
と言った具合に、改行を消してから固定長に区切って再度改行付与という形でうまくいきました!
皆さんに教えてもらった方法とは少し異なりますが、ここで質問しなければ検索ワードすら導き出せませんでした。
皆様には感謝してもしきれません。
ありがとうございました。
色々と試した結果、
perl -pe ‘s/¥r/@/g $INFILE | perl -pe ‘s/¥n/@/g > $TMPFILE
cat $TMPFILE | perl -e ‘while(read(STDIN, $tmp , 100)){print $tmp, “¥n”}’ > $OUTFILE
と言った具合に、改行を消してから固定長に区切って再度改行付与という形でうまくいきました!
皆さんに教えてもらった方法とは少し異なりますが、ここで質問しなければ検索ワードすら導き出せませんでした。
皆様には感謝してもしきれません。
ありがとうございました。
488デフォルトの名無しさん
2021/02/02(火) 23:52:09.94ID:LuWw9dWt []で囲まれた単語は/\[.+\]+/gで見つかるけど
文中に複数[]で囲まれた範囲があるとうまくいかない
'['以降で一番近い']'にマッチさせたいんだがどうやるか教えて
文中に複数[]で囲まれた範囲があるとうまくいかない
'['以降で一番近い']'にマッチさせたいんだがどうやるか教えて
489デフォルトの名無しさん
2021/02/03(水) 00:24:53.98ID:SY/XoUH2 /\[[^\]]+\]+/g
490デフォルトの名無しさん
2021/02/03(水) 01:04:29.59ID:UENZ/29T >>489
ありがとう!
ありがとう!
491デフォルトの名無しさん
2021/02/03(水) 18:02:08.71ID:CJ1qfEuB 英数字7桁[0-9a-zA-Z]の文字列から(改行を経て)先程とは異なる英数字7桁の文字列まで最短一致させる正規表現を書きたいのですがわかりません…
一つ目の7桁の英数字は変数fistに入ってます
new Reg(first +"(.*\n)*?"+ここから先がわかりません
どなたかよろしくお願いしますm(_ _)m
一つ目の7桁の英数字は変数fistに入ってます
new Reg(first +"(.*\n)*?"+ここから先がわかりません
どなたかよろしくお願いしますm(_ _)m
492デフォルトの名無しさん
2021/02/03(水) 18:33:27.05ID:sadlF3mb 最短一致ということは行当たりが[0-9a-zA-Z]{7}ではなく別の文字列も含んでいそうな
つまり「0123abc\ndef4567」だけではなく「あいう0123abc\ndef4567かきく」もあるとか
見本出した方がいいのではないかな
つまり「0123abc\ndef4567」だけではなく「あいう0123abc\ndef4567かきく」もあるとか
見本出した方がいいのではないかな
493デフォルトの名無しさん
2021/02/03(水) 18:41:43.46ID:q3Uucr84 とりあえずこんな感じであとは調整して
https://regex101.com/r/aLWgGd/1
https://regex101.com/r/aLWgGd/1
494デフォルトの名無しさん
2021/02/03(水) 19:08:15.83ID:CJ1qfEuB >>492
すいません、簡単にするために設定をちょっと変えさせてください。
[0-9A-Z]
大雑把で大丈夫なんですが
あいうえお01ABC23あいうえお01abc23あいうえお01abc23 ←ここの01ABC23から
あいうえお01abc23あいうえお01ABC23あいうえお01abc23
あいうえお01abc23あいうえお01ABC23あいうえお01abc23
あいうえお01abc23あいうえお01DEF23あいうえお01abc23 ←ここの01DEF23まで切り抜きたい
あいうえお01abc23あいうえお01ABC23あいうえお01abc23
あいうえお01abc23あいうえお01HIJ23あいうえお01abc23
first = "01ABC23" が入ってるので、正規表現の最後を01DEF23にしたいのですが
[0-9A-Z]{7}から"01ABC23"だけを除外する方法がわからず困ってます。
すいません、簡単にするために設定をちょっと変えさせてください。
[0-9A-Z]
大雑把で大丈夫なんですが
あいうえお01ABC23あいうえお01abc23あいうえお01abc23 ←ここの01ABC23から
あいうえお01abc23あいうえお01ABC23あいうえお01abc23
あいうえお01abc23あいうえお01ABC23あいうえお01abc23
あいうえお01abc23あいうえお01DEF23あいうえお01abc23 ←ここの01DEF23まで切り抜きたい
あいうえお01abc23あいうえお01ABC23あいうえお01abc23
あいうえお01abc23あいうえお01HIJ23あいうえお01abc23
first = "01ABC23" が入ってるので、正規表現の最後を01DEF23にしたいのですが
[0-9A-Z]{7}から"01ABC23"だけを除外する方法がわからず困ってます。
495デフォルトの名無しさん
2021/02/03(水) 19:12:17.69ID:CJ1qfEuB496デフォルトの名無しさん
2021/02/03(水) 19:16:51.84ID:CJ1qfEuB 日本語がおかしくなってました
01ABC23〜01DEF23と切り抜きたいのですが、
first = "01ABC23"と入っているので、firstという変数を使いつつ[0-9A-Z]{7}から"01ABC23"だけを除外する方法がわからず困ってます。
01ABC23〜01DEF23と切り抜きたいのですが、
first = "01ABC23"と入っているので、firstという変数を使いつつ[0-9A-Z]{7}から"01ABC23"だけを除外する方法がわからず困ってます。
497デフォルトの名無しさん
2021/02/03(水) 19:28:51.74ID:oLpXy7xv >>496
"(?!" + first + ")[0-9A-Z]{7}"
"(?!" + first + ")[0-9A-Z]{7}"
498デフォルトの名無しさん
2021/02/03(水) 19:41:14.94ID:CJ1qfEuB >>497
ありがとうございますm(_ _)m
↓だと最短一致しないのですが、真ん中がおかしいのでしょうか?
let reg = new RegExp(first+"(.*\n)*?"+"(?!"+first+")[0-9A-Z]{7}");
改行を含めた最短一致は([\s\S]*?)か(.*\n)*?でできていたのですが、何故か最短にならず困ってます
ありがとうございますm(_ _)m
↓だと最短一致しないのですが、真ん中がおかしいのでしょうか?
let reg = new RegExp(first+"(.*\n)*?"+"(?!"+first+")[0-9A-Z]{7}");
改行を含めた最短一致は([\s\S]*?)か(.*\n)*?でできていたのですが、何故か最短にならず困ってます
499デフォルトの名無しさん
2021/02/03(水) 19:49:30.28ID:CJ1qfEuB500デフォルトの名無しさん
2021/02/03(水) 20:21:28.10ID:CJ1qfEuB501デフォルトの名無しさん
2021/02/04(木) 12:49:19.54ID:ynIf2rIG [正規表現の[表現力[は]ネストに]勝てない]
※Perlの拡張とかは除く
※Perlの拡張とかは除く
502デフォルトの名無しさん
2021/02/04(木) 15:31:37.02ID:7s9fZWEo 繰り返しの中で使う時、時間のかかる正規表現を避けたいが、結局試すのが一番
if x=="abc" と if x=~/^abc$/ の比較など(簡単すぎる例)
重要なシステム内で複雑な表現を使う場合テストも重要だが、
どうしてもおかしくなったら調べる式になってしまう
if x=="abc" と if x=~/^abc$/ の比較など(簡単すぎる例)
重要なシステム内で複雑な表現を使う場合テストも重要だが、
どうしてもおかしくなったら調べる式になってしまう
503デフォルトの名無しさん
2021/02/06(土) 14:47:08.00ID:s4jA/y9i お願いします
●Regular Expressionの使用環境
VBScript
●検索か置換か?
置換
●説明
[hoge]をブラケットごと消したい
[[hoge]]の場合は残したい
●対象データ
abc[hoge]def
ghi[[hoge]]jkl
●希望する結果
abcdef
ghi[[hoge]]jkl
^^^^^^^
否定戻り読み否定先読みで試してみたのですが、ブラケット2回の場合にマッチせずブラケット1回の場合にのみマッチさせる方法が分かりませんでした
よろしくお願いします
●Regular Expressionの使用環境
VBScript
●検索か置換か?
置換
●説明
[hoge]をブラケットごと消したい
[[hoge]]の場合は残したい
●対象データ
abc[hoge]def
ghi[[hoge]]jkl
●希望する結果
abcdef
ghi[[hoge]]jkl
^^^^^^^
否定戻り読み否定先読みで試してみたのですが、ブラケット2回の場合にマッチせずブラケット1回の場合にのみマッチさせる方法が分かりませんでした
よろしくお願いします
504デフォルトの名無しさん
2021/02/06(土) 15:07:35.62ID:bKRJeVsu (?<!\[)\[hoge\](?!\])
505デフォルトの名無しさん
2021/02/06(土) 16:56:52.18ID:EC31O1b+ >>503
VBSには否定戻り読みは無いので、工夫するしかない
すぐには思いつかないけどもっといい方法もあるかもしれないのでググってみては?
愚直には、一つの方法として以下の場合に分ける
1) [hoge]で始まる場合
2) 文字列があって [ 以外で終わって [hoge] がある場合
3) 文字列があって [ で終わってる場合、[hoge] があって ] が続かないこと
pattern : "^(?:\[hoge]|(.*?\[)\[hoge\](?!\])|(.*?[^\[])\[hoge\])(.*)$"
replace : "$1$2$3"
abcdef → abcdef
[hoge]def → def
[[abc]]def → [[hoge]]def
abc[hoge]def → abcdef
abc[[hoge]]def → abc[[hoge]]def
abc[[hoge]def → abc[def
abc[hoge]]def → abc]def
下2つの場合が無ければもう少し簡易にできる
では[hoge]が2つ以上ある場合はどうするか?
すぐ思いつく方法としては、変換をループさせて、文字列に変化がなければ終わりとか
VBSには否定戻り読みは無いので、工夫するしかない
すぐには思いつかないけどもっといい方法もあるかもしれないのでググってみては?
愚直には、一つの方法として以下の場合に分ける
1) [hoge]で始まる場合
2) 文字列があって [ 以外で終わって [hoge] がある場合
3) 文字列があって [ で終わってる場合、[hoge] があって ] が続かないこと
pattern : "^(?:\[hoge]|(.*?\[)\[hoge\](?!\])|(.*?[^\[])\[hoge\])(.*)$"
replace : "$1$2$3"
abcdef → abcdef
[hoge]def → def
[[abc]]def → [[hoge]]def
abc[hoge]def → abcdef
abc[[hoge]]def → abc[[hoge]]def
abc[[hoge]def → abc[def
abc[hoge]]def → abc]def
下2つの場合が無ければもう少し簡易にできる
では[hoge]が2つ以上ある場合はどうするか?
すぐ思いつく方法としては、変換をループさせて、文字列に変化がなければ終わりとか
506デフォルトの名無しさん
2021/02/06(土) 17:17:15.94ID:do+3t/u8 (¥[hoge¥])(?!¥])|[^¥[](¥[hoge¥])
https://regex101.com/r/xhea5T/1
https://regex101.com/r/xhea5T/1
507デフォルトの名無しさん
2021/02/06(土) 17:31:09.15ID:nqcg0owg (\[\[hoge\]\])|\[hoge\] → $1
https://regex101.com/r/xhea5T/2
https://regex101.com/r/xhea5T/2
508デフォルトの名無しさん
2021/02/06(土) 17:40:46.95ID:bKRJeVsu ([^\[])\[hoge\]([^\]])
$1$2
(^|[^\[])\[hoge\]([^\]]|$)
$1$2
$1$2
(^|[^\[])\[hoge\]([^\]]|$)
$1$2
510デフォルトの名無しさん
2021/02/06(土) 18:09:33.55ID:EC31O1b+511デフォルトの名無しさん
2021/02/06(土) 18:21:12.27ID:z9sN/DQY 発想の転換だな
目鱗
目鱗
512デフォルトの名無しさん
2021/02/06(土) 18:57:27.44ID:do+3t/u8 >>507
へぇー、これは面白い
へぇー、これは面白い
513デフォルトの名無しさん
2021/02/06(土) 19:33:52.91ID:nvvrKfMw >>507
これは賢い
これは賢い
514デフォルトの名無しさん
2021/02/16(火) 18:09:22.76ID:YYQsROlp ※間はタブです
●Regular Expressionの使用環境
サクラエディタ
●検索か置換か?
置き換え
●説明
(ABC|JKLHI7)を反転させたい
※(ABC|JKLHI7)→空に置き換え
ABC DEF 123
FGH JKL 956
GBN MJK HI7
↓こうなります
DEF 123
FGH 956
GBN MJK
(ABC|JKLHI7)を反転させて
ABC
JKL
HI7
というデータに置き換えたいです。
よろしくお願いいたします。
●Regular Expressionの使用環境
サクラエディタ
●検索か置換か?
置き換え
●説明
(ABC|JKLHI7)を反転させたい
※(ABC|JKLHI7)→空に置き換え
ABC DEF 123
FGH JKL 956
GBN MJK HI7
↓こうなります
DEF 123
FGH 956
GBN MJK
(ABC|JKLHI7)を反転させて
ABC
JKL
HI7
というデータに置き換えたいです。
よろしくお願いいたします。
515デフォルトの名無しさん
2021/02/16(火) 18:10:03.36ID:YYQsROlp516デフォルトの名無しさん
2021/02/16(火) 18:30:01.16ID:9J2HaZUU 区切りは全角空白なのかい?
まあこんなのでどう?
(ABC|JKL|HI7)|[0-9A-Z]*→$1
まあこんなのでどう?
(ABC|JKL|HI7)|[0-9A-Z]*→$1
517デフォルトの名無しさん
2021/02/16(火) 19:29:55.89ID:YYQsROlp518デフォルトの名無しさん
2021/02/16(火) 20:11:15.08ID:2Q6k9WLx519デフォルトの名無しさん
2021/02/17(水) 00:48:24.95ID:5uVmT0ro XABCXのようなものまでABCにしたいなら、末尾を+?に変えた方がいいかも
520デフォルトの名無しさん
2021/02/18(木) 23:51:52.71ID:sRdwF113 面白いなあ
逆に正規言語じゃない言語ってどんなのか気になる
逆に正規言語じゃない言語ってどんなのか気になる
521デフォルトの名無しさん
2021/02/19(金) 07:25:19.97ID:1ojHRCGQ 言語?
522デフォルトの名無しさん
2021/02/19(金) 18:55:29.37ID:Clj7wgUu 文脈自由言語とか文脈依存言語とか?
523デフォルトの名無しさん
2021/02/19(金) 20:03:11.77ID:gWMDVcMR 文脈も先読み後読みrematch駆使すれば取れそうに思うけど、本来どこまでやっていいんだっけ 理論とか分からん
524デフォルトの名無しさん
2021/02/19(金) 20:05:33.21ID:Wnqd+KEH 正規表現で記述可能な文字列の集合を指して正規言語という
が、その意味で使われたのかは定かでない
が、その意味で使われたのかは定かでない
525デフォルトの名無しさん
2021/02/19(金) 20:15:12.89ID:gWMDVcMR 取り敢えずその言語がn要素の有限集合ならstr1|str2|...|strn で表現できるのでは
文字列の長さを制限して、有限の文字集合なら
すげーつまらないけど
文字列の長さを制限して、有限の文字集合なら
すげーつまらないけど
526デフォルトの名無しさん
2021/02/19(金) 20:33:20.22ID:gWMDVcMR 無作為な文字列から、特定の言語に属する部分列を検出しろ、って問題にどれだけ簡潔に答えられるかってことだよな
どう計ったものか
どう計ったものか
527デフォルトの名無しさん
2021/02/20(土) 01:01:18.47ID:yNkkv6Pq AIに正規表現を設計させたらどんなものになるのだろう
528デフォルトの名無しさん
2021/03/03(水) 06:22:13.41ID:7UFtTk12 ●Regular Expressionの使用環境
python 3.x
●検索か置換か?
検索
●説明
ここをアクセスの次に出てくるURL(ttp://xxxx2/)をとってきたい
pattern = re.search("▼ここをアクセス.*(http.*\n)+?",a_text,flags=re.DOTALL)
複数行検索してるが最後のURLをとってきてしまう
●対象データ
URL1です
ttp://xxxx2/
□ 【▼ここをアクセス】
ttp://xxxx2/
URL2です
ttp://xxxx3/
●希望する結果
ttp://xxxx2/
python 3.x
●検索か置換か?
検索
●説明
ここをアクセスの次に出てくるURL(ttp://xxxx2/)をとってきたい
pattern = re.search("▼ここをアクセス.*(http.*\n)+?",a_text,flags=re.DOTALL)
複数行検索してるが最後のURLをとってきてしまう
●対象データ
URL1です
ttp://xxxx2/
□ 【▼ここをアクセス】
ttp://xxxx2/
URL2です
ttp://xxxx3/
●希望する結果
ttp://xxxx2/
529デフォルトの名無しさん
2021/03/03(水) 06:44:56.40ID:lklpa5qm > "▼ここをアクセス.*(http.*\n)+?"
python分からんけど
"▼ここをアクセス.*?(http.*?\n)"
python分からんけど
"▼ここをアクセス.*?(http.*?\n)"
530デフォルトの名無しさん
2021/03/03(水) 07:02:17.82ID:h6piMY+h >>529
レスサンクスですが、最後のttp://xxxx3/を拾ってきてしまいます
レスサンクスですが、最後のttp://xxxx3/を拾ってきてしまいます
531デフォルトの名無しさん
2021/03/03(水) 07:20:09.73ID:h6piMY+h 自己解決
"▼ここをアクセス.+?(http.+?)\n"
でいいみたい
"▼ここをアクセス.+?(http.+?)\n"
でいいみたい
532デフォルトの名無しさん
2021/03/07(日) 14:22:59.84ID:Fo2Np7TJ 正規表現ってパズルとしては面白いけど
https://oraclesqlpuzzle.ninja-web.net/regex/index.html
可読性に問題あるんじゃね?
もっとマシな別の表記方法が必要じゃないか?
https://oraclesqlpuzzle.ninja-web.net/regex/index.html
可読性に問題あるんじゃね?
もっとマシな別の表記方法が必要じゃないか?
533デフォルトの名無しさん
2021/03/07(日) 16:02:01.74ID:UIB+9WXp 自分が解らないものは悪
534デフォルトの名無しさん
2021/03/07(日) 16:17:46.75ID:TNmQ0Vam 理解の過程で可読性に問題があるのではと疑問を抱き、
別の表記法の必要性を考え、
そのあと別の表記を実際に考えるところまでやると、
正規表現考えたケン・トンプソンすげーなってなる
別の表記法の必要性を考え、
そのあと別の表記を実際に考えるところまでやると、
正規表現考えたケン・トンプソンすげーなってなる
535デフォルトの名無しさん
2021/03/07(日) 17:26:15.98ID:FZPehcc/ >>532
> もっとマシな別の表記方法が必要じゃないか?
定期的にそう言うのが話題になるけどなかなかいい記法が無いんだよね
abc+
程度の簡単な奴と
^((?!aaa).)*((?=aaa)a((?!aaa).)*){3,5}((?!aaa).)*$
みたいなパット見よく分からん奴を1つの記法で簡単に見易くするのはなかなか難しい
> もっとマシな別の表記方法が必要じゃないか?
定期的にそう言うのが話題になるけどなかなかいい記法が無いんだよね
abc+
程度の簡単な奴と
^((?!aaa).)*((?=aaa)a((?!aaa).)*){3,5}((?!aaa).)*$
みたいなパット見よく分からん奴を1つの記法で簡単に見易くするのはなかなか難しい
536デフォルトの名無しさん
2021/03/07(日) 17:53:05.78ID:AM/Ef9W/ やるとしたらアスキー文字以外の文字や記号を加えてもうちょっと役割を分散させると、機能を保持しつつ見やすくはなるが、そうすると今度はラテン文字圏の人が「自分が解らないものは悪」でいかに不要かを全力で説き始めると思う。
537デフォルトの名無しさん
2021/03/07(日) 17:56:22.71ID:TNmQ0Vam ASCII外の文字使うと入力コストが高くなるじゃん
538デフォルトの名無しさん
2021/03/07(日) 18:04:15.76ID:4bEjyVwB ?とか^とか二つの意味を持つのは何とかしてほしかったよな
まあ分かるからいいんだけど
まあ分かるからいいんだけど
539デフォルトの名無しさん
2021/03/07(日) 20:25:01.40ID:RWgRWesX 可読性を犠牲にして短く書けるのが正規表現
正規表現と同じことを可読性の高い表現で記述しようとすればなにかと長くなる
ただある一定以上複雑な正規表現は普通のプログラミング言語で書き直したほうが可読性も保守性も高い
正規表現と同じことを可読性の高い表現で記述しようとすればなにかと長くなる
ただある一定以上複雑な正規表現は普通のプログラミング言語で書き直したほうが可読性も保守性も高い
540デフォルトの名無しさん
2021/03/07(日) 21:12:54.42ID:0cOR0yWB 普通のプログラミング言語で正規表現ライブラリ使ってます
541デフォルトの名無しさん
2021/03/07(日) 21:23:44.60ID:FZPehcc/ 例えば.NETみたいに正規表現中に改行入れたりコメント書けるようにするとかして可読性を上げる試みはあるね
https://www.atmarkit.co.jp/fdotnet/dotnettips/582regexcomment/regexcomment.html
https://www.atmarkit.co.jp/fdotnet/dotnettips/582regexcomment/regexcomment.html
542デフォルトの名無しさん
2021/03/07(日) 21:31:45.50ID:Fo2Np7TJ >>539
それしかなさそうだ
それしかなさそうだ
543デフォルトの名無しさん
2021/03/07(日) 21:36:49.39ID:6FoXMbth >>541
改行してコメント書くのは Perl の正規表現でもできたりする
改行してコメント書くのは Perl の正規表現でもできたりする
544デフォルトの名無しさん
2021/03/07(日) 21:55:32.23ID:RWgRWesX545デフォルトの名無しさん
2021/03/07(日) 22:46:53.20ID:Fo2Np7TJ https://oraclesqlpuzzle.ninja-web.net/regex/regex-2-30.html
これは解読無理やろw 課題→正規表現を思いつくことはできるかも知れんが
正規表現→課題の解読は不可能に近い
課題:行ごとで、
文字列CABと
文字列ABCのみの行を検索する。
^((C(?=AB))|((?<=C)A(?=B))|((?<=CA)B)
|(A(?=BC))|((?<=A)B(?=C))|((?<=AB)C))*$
これは解読無理やろw 課題→正規表現を思いつくことはできるかも知れんが
正規表現→課題の解読は不可能に近い
課題:行ごとで、
文字列CABと
文字列ABCのみの行を検索する。
^((C(?=AB))|((?<=C)A(?=B))|((?<=CA)B)
|(A(?=BC))|((?<=A)B(?=C))|((?<=AB)C))*$
546デフォルトの名無しさん
2021/03/07(日) 23:05:17.93ID:6FoXMbth547デフォルトの名無しさん
2021/03/07(日) 23:21:37.42ID:Fo2Np7TJ それで同じ結果になるな regex 101 でやると
548デフォルトの名無しさん
2021/03/07(日) 23:53:47.53ID:4bEjyVwB 正規表現には「必ず」コメントが欲しいな
できれば例も
典型例と境界例も
できれば例も
典型例と境界例も
549デフォルトの名無しさん
2021/03/11(木) 21:40:27.72ID:RBQB718T お願いします
●Regular Expressionの使用環境
JavaScript
●検索か置換か?
置換
●説明
数字の文字列の間の1個以上の空白や改行を カンマで置換して繋げたい
33034640, 33034640, 21703214
●対象データ
33034640 30203225
21703214
●Regular Expressionの使用環境
JavaScript
●検索か置換か?
置換
●説明
数字の文字列の間の1個以上の空白や改行を カンマで置換して繋げたい
33034640, 33034640, 21703214
●対象データ
33034640 30203225
21703214
550デフォルトの名無しさん
2021/03/11(木) 22:14:06.84ID:IDj18sQF >>549
¥s+をカンマで置換
¥s+をカンマで置換
551デフォルトの名無しさん
2021/03/11(木) 22:15:56.92ID:IDj18sQF552デフォルトの名無しさん
2021/03/11(木) 22:29:51.41ID:79QhYvaG 前後の数字チェック入り(区切りに\t,\fを除く)
(JavaScriptって言ってもWSH(JScript)や古いとダメ)
text.replace(/(?<=\d)[ \r\n]+(?=\d)/,", ")
(JavaScriptって言ってもWSH(JScript)や古いとダメ)
text.replace(/(?<=\d)[ \r\n]+(?=\d)/,", ")
553デフォルトの名無しさん
2021/03/11(木) 22:30:57.72ID:79QhYvaG text.replace(/(?<=\d)[ \r\n]+(?=\d)/g,", ")
554デフォルトの名無しさん
2021/03/11(木) 23:04:03.06ID:RBQB718T >>550
それすると文頭や文末にあるスペースにもカンマがついて変になっちゃいます。
それすると文頭や文末にあるスペースにもカンマがついて変になっちゃいます。
555デフォルトの名無しさん
2021/03/11(木) 23:08:30.44ID:RBQB718T >>553
iPadのtextwellっていうアプリでやってるんですが・・・何故か動かないです
iPadのtextwellっていうアプリでやってるんですが・・・何故か動かないです
556デフォルトの名無しさん
2021/03/11(木) 23:29:09.19ID:IDj18sQF557デフォルトの名無しさん
2021/03/11(木) 23:33:53.05ID:APoyxLpJ 文頭,文末のスペース,改行を残す必要がないなら先にtrimしちゃえば良いのでは
str.trim().replace(/\s+/gm, ',')
str.trim().replace(/\s+/gm, ',')
558デフォルトの名無しさん
2021/03/12(金) 07:31:49.43ID:/Ahlj9GN >>557
できました!ありがとうございました!
できました!ありがとうございました!
559デフォルトの名無しさん
2021/03/25(木) 17:05:14.58ID:m/0xUypz 浮動小数点数の仮数部の正規表現がたとえば
https://qiita.com/hitsumabushi845/items/1b1a4921d515f662b416
を見ると
([0-9]+(\.[0-9]*)?|\.[0-9]+)
とかなり煩雑な感じなんですが、これを[0-9]+と\.?のインターリービングとして表記できればより簡潔になるはずなのに、なぜ正規表現にインターリービングがないのか、ご存知の方いらっしゃいませんか?
https://qiita.com/hitsumabushi845/items/1b1a4921d515f662b416
を見ると
([0-9]+(\.[0-9]*)?|\.[0-9]+)
とかなり煩雑な感じなんですが、これを[0-9]+と\.?のインターリービングとして表記できればより簡潔になるはずなのに、なぜ正規表現にインターリービングがないのか、ご存知の方いらっしゃいませんか?
560デフォルトの名無しさん
2021/03/25(木) 18:34:43.45ID:T+HzAix1 インターリービングとは
561デフォルトの名無しさん
2021/03/25(木) 18:35:20.79ID:iRaOTaqm562デフォルトの名無しさん
2021/03/25(木) 18:44:54.48ID:ItxHMUbH 正規表現でやるものなのかそれ?
563デフォルトの名無しさん
2021/03/25(木) 20:05:19.84ID:DBtu6Q2L 0-9が1回以上、.が1回以下現れるパターンを簡潔に書ければいいんだよね
564デフォルトの名無しさん
2021/03/25(木) 20:51:18.60ID:T+HzAix1 >>559
0.123とかだけでなく.123みたいな表記も含めてるから煩雑に見えるだけでしょ
0.123とかだけでなく.123みたいな表記も含めてるから煩雑に見えるだけでしょ
565デフォルトの名無しさん
2021/03/25(木) 20:57:31.28ID:+PvM3W0M 例えばpythonだと、
\d
と書くと、
[0-9]
と同じ意味になるんだが、その程度の省略ができるだけでは不満?
\d
と書くと、
[0-9]
と同じ意味になるんだが、その程度の省略ができるだけでは不満?
566デフォルトの名無しさん
2021/03/26(金) 12:59:11.27ID:8UZMtFlJ まず\dと[0-9]は一致しないケースがあるからダメでしょ
単なるバイトシーケンスとして扱っているときは \d == [0-9] だけど、
Unicodeの文字列として扱っているときはUnicodeのNdカテゴリに一致するかを見るので
\dが全角の「0」に一致したりする
Pythonもこういう仕様持ってた気がするけどちょっと最近触ってないから怪しい
単なるバイトシーケンスとして扱っているときは \d == [0-9] だけど、
Unicodeの文字列として扱っているときはUnicodeのNdカテゴリに一致するかを見るので
\dが全角の「0」に一致したりする
Pythonもこういう仕様持ってた気がするけどちょっと最近触ってないから怪しい
567デフォルトの名無しさん
2021/03/26(金) 13:48:50.07ID:9MjXQivW568デフォルトの名無しさん
2021/03/26(金) 13:50:58.63ID:9HpPnfto \dより\wで嵌ることが絶対多い(Unicodeの場合)
569デフォルトの名無しさん
2021/03/26(金) 14:50:30.80ID:yQ1w8lx7 動きそうで動かないのは、\s\Sかな
改行かなにかで引っ掛からなくて困る事がある
改行かなにかで引っ掛からなくて困る事がある
570デフォルトの名無しさん
2021/03/26(金) 19:09:23.59ID:bWZQxU2M >>567
部分列にマッチしたんだろうな
部分列にマッチしたんだろうな
571デフォルトの名無しさん
2021/03/27(土) 07:24:19.21ID:6HYRQzqn572デフォルトの名無しさん
2021/03/27(土) 07:53:26.38ID:c8B2TB9l573デフォルトの名無しさん
2021/03/27(土) 07:59:48.48ID:HYD5C7Ts 数値として正しくないものの一部にマッチするのがいやなんだろ
そりゃ前後の条件を指定してないからマッチするのは当然なんだから
(?<![0-9.])と(?![0-9.])を前後につけりゃ弾けるよ
そりゃ前後の条件を指定してないからマッチするのは当然なんだから
(?<![0-9.])と(?![0-9.])を前後につけりゃ弾けるよ
574デフォルトの名無しさん
2021/03/27(土) 08:17:02.42ID:8mKnzpia575デフォルトの名無しさん
2021/03/27(土) 09:50:47.60ID:6HYRQzqn576デフォルトの名無しさん
2021/03/27(土) 10:05:58.69ID:8qqpgzaM マッチしない行を正規表現で抽出したいとき、
必ず、^(?!.*残したい文字).*、この書き方になってしまいます、
必ず^(?!.*と).*で残したい文字を包むという書き方です。
ほかの書き方があれば教えてください。
例えば、以下のようなログファイルでerrだけ残したい場合は
^(?!.*err).*
と書いてerrを残します
[日付] warn メッセージ
[日付] info メッセージ
[日付] err メッセージ
[日付] info メッセージ
特段、これ以外の書き方が出来ず困ったという例も無いのですが、
ほかの表現を(あれば)知ることで、もっと知識を増やせるのではないとおもいお伺いします
よろしくお願いいたします。
必ず、^(?!.*残したい文字).*、この書き方になってしまいます、
必ず^(?!.*と).*で残したい文字を包むという書き方です。
ほかの書き方があれば教えてください。
例えば、以下のようなログファイルでerrだけ残したい場合は
^(?!.*err).*
と書いてerrを残します
[日付] warn メッセージ
[日付] info メッセージ
[日付] err メッセージ
[日付] info メッセージ
特段、これ以外の書き方が出来ず困ったという例も無いのですが、
ほかの表現を(あれば)知ることで、もっと知識を増やせるのではないとおもいお伺いします
よろしくお願いいたします。
577デフォルトの名無しさん
2021/03/27(土) 10:12:04.85ID:3M9UQTXy578デフォルトの名無しさん
2021/03/27(土) 10:24:10.55ID:HRW8qdH1 >>576
最後の.*は要らないんじゃないかな
最後の.*は要らないんじゃないかな
579デフォルトの名無しさん
2021/03/27(土) 10:53:48.21ID:cpUHfD3R >>576
>例えば、以下のようなログファイルでerrだけ残したい場合は
in-placeで置換するより、残したいものを抽出して新しいファイルを作成したほうがよくないか?
用途によっては日付とログレベルを指定してログファイルに直接クエリを投げてもいい
>例えば、以下のようなログファイルでerrだけ残したい場合は
in-placeで置換するより、残したいものを抽出して新しいファイルを作成したほうがよくないか?
用途によっては日付とログレベルを指定してログファイルに直接クエリを投げてもいい
580デフォルトの名無しさん
2021/03/27(土) 12:12:53.22ID:8qqpgzaM581デフォルトの名無しさん
2021/03/27(土) 12:42:16.84ID:TmS3InK/582デフォルトの名無しさん
2021/03/27(土) 15:07:28.25ID:cpUHfD3R >>580
余計なお世話なんだろうけどログファイルをわざわざエディタで開いて
マッチしない行を正規表現で置換して保存するのは無駄じゃないのって話
↓例えばgrepならこれでよくて指定も簡単だし自動化もしやすい
$ grep 'err' all.log > err.log
マッチしない行を正規表現を使いそうな例として
たまたま思いついただけならならいいんだけど
余計なお世話なんだろうけどログファイルをわざわざエディタで開いて
マッチしない行を正規表現で置換して保存するのは無駄じゃないのって話
↓例えばgrepならこれでよくて指定も簡単だし自動化もしやすい
$ grep 'err' all.log > err.log
マッチしない行を正規表現を使いそうな例として
たまたま思いついただけならならいいんだけど
583デフォルトの名無しさん
2021/03/27(土) 17:09:38.08ID:SqJSHKEy マッチしない行は-v付ければ取り出せるからな
584デフォルトの名無しさん
2021/03/27(土) 18:55:12.69ID:HRW8qdH1 そもそもサクラエディタにはマッチしない行を抽出する機能あるからあまり真剣に考えたことない
585デフォルトの名無しさん
2021/03/27(土) 22:37:04.08ID:p2/S5VcH ログの加工をエディタでやろうとするのは筋が悪いわな
586デフォルトの名無しさん
2021/03/28(日) 00:36:09.11ID:p6/Rs1VD 加工というか、ログは必要な部分だけ抽出して見たいという需要はある
587デフォルトの名無しさん
2021/03/28(日) 01:38:45.00ID:Ah6uwjvI たまにトラブルシューティングとかで検索する程度ならLog Parserみたいなやつでそれなりに捗るよ
検索はリニアなので量が増えると遅いけどgrepに比べれば条件指定がしやすい
https://www.microsoft.com/en-us/download/details.aspx?id=24659
速度を求めるならBigQueryとかの検索/分析系のDBに突っ込む
検索はリニアなので量が増えると遅いけどgrepに比べれば条件指定がしやすい
https://www.microsoft.com/en-us/download/details.aspx?id=24659
速度を求めるならBigQueryとかの検索/分析系のDBに突っ込む
588デフォルトの名無しさん
2021/03/28(日) 19:46:40.79ID:gm3gYlo8 >>580
サクラエディタ(bregonig.dll 4.10以降)使ってるなら
>>581も書いてるけど非包含オペレーターが使えます
鬼雲およびbregonig.dllの作者さん(
@k-takata)自身がQiitaに使い方とかも載せてます
https://qiita.com/k-takata/items/4e45121081c83d3d5bfd
サクラエディタ(bregonig.dll 4.10以降)使ってるなら
>>581も書いてるけど非包含オペレーターが使えます
鬼雲およびbregonig.dllの作者さん(
@k-takata)自身がQiitaに使い方とかも載せてます
https://qiita.com/k-takata/items/4e45121081c83d3d5bfd
589デフォルトの名無しさん
2021/03/31(水) 03:07:25.18ID:AtIsL56M regexエンジンって皆さんどういう基準で選んでますか?
ちょつとググるとcommon lispのcl-ppcreがダントツというベンチが出てきますが本当でしょうか?(このスレで言及が見当たらないもので…)
perl風なのがちょっと気になりますが
ちょつとググるとcommon lispのcl-ppcreがダントツというベンチが出てきますが本当でしょうか?(このスレで言及が見当たらないもので…)
perl風なのがちょっと気になりますが
590デフォルトの名無しさん
2021/03/31(水) 03:15:02.21ID:AtIsL56M (試せばいいんだけど、環境構築で折れました…)
591デフォルトの名無しさん
2021/03/31(水) 07:27:06.36ID:XV2UTtWr 特に制限なきゃ俺の採用基準は
・使おうとする言語で楽に使える奴
だな
あとダントツの基準や何を対象にするかは人によって違うから君の考えるダントツを説明しないと回答しようがないと思うぞ
・使おうとする言語で楽に使える奴
だな
あとダントツの基準や何を対象にするかは人によって違うから君の考えるダントツを説明しないと回答しようがないと思うぞ
592デフォルトの名無しさん
2021/03/31(水) 08:34:08.22ID:U/8CErR8 >>591
ベンチって書いてあるから速度でしょ
ベンチって書いてあるから速度でしょ
593デフォルトの名無しさん
2021/03/31(水) 11:28:59.80ID:Vc5hrOQS ユースケースで速度は変わるからそれだけじゃなんとも言えないよね
NGフィルターみたいなものを高速にしたい場合に言語標準以外で考えるなら
re2かhyperscanを候補にするかな
NGフィルターみたいなものを高速にしたい場合に言語標準以外で考えるなら
re2かhyperscanを候補にするかな
594デフォルトの名無しさん
2021/03/31(水) 12:11:49.60ID:AtIsL56M >>591-593
言葉足らずでしたごめん、線形にコードした化学式から部分構造マッチで設計に活かそうかと(古典的だけど)
chemspider.com等から100GB(100万エントリー)のテキストにまとめたが、重複や興味あるデータ以外はawk/sedでメモリに載せずに10GBまでは落とせるかも
コマンドライン引数で正規表現文字列を取り、そのままパイプで渡せる言語(cl、python等)なら速ければ何でもいいかなと
有名なperl/grepもパイプから読むけど、検索効率のためになんかキャッシュしてるようで、すぐメモリが膨らんでクラッシュする
言葉足らずでしたごめん、線形にコードした化学式から部分構造マッチで設計に活かそうかと(古典的だけど)
chemspider.com等から100GB(100万エントリー)のテキストにまとめたが、重複や興味あるデータ以外はawk/sedでメモリに載せずに10GBまでは落とせるかも
コマンドライン引数で正規表現文字列を取り、そのままパイプで渡せる言語(cl、python等)なら速ければ何でもいいかなと
有名なperl/grepもパイプから読むけど、検索効率のためになんかキャッシュしてるようで、すぐメモリが膨らんでクラッシュする
595デフォルトの名無しさん
2021/03/31(水) 12:32:32.23ID:AtIsL56M あんまり後処理できないけど、sedのg/re/pはスケーラブルみたい
g/re/commandのcommandでちょっと実験する限り、command中でmatch情報が使われてなければ保持しないのかな?
保持するmatch情報を指定出来き、match情報を得るたびに外部ファイルへ追記できる処理系が必要なのだろうか
g/re/commandのcommandでちょっと実験する限り、command中でmatch情報が使われてなければ保持しないのかな?
保持するmatch情報を指定出来き、match情報を得るたびに外部ファイルへ追記できる処理系が必要なのだろうか
596デフォルトの名無しさん
2021/03/31(水) 12:57:50.76ID:0y1R6Bno なんとなく、パイプ避けたほうが
597デフォルトの名無しさん
2021/03/31(水) 13:30:47.96ID:oCEpBqBX パイプ自体キューだからメモリ膨らむって理解してるんだけど違うのかな
598デフォルトの名無しさん
2021/03/31(水) 13:36:46.22ID:jIuPTrt2 >>596
メモリに載らないのはパイプ、みたいにバカの一つ覚えしてるんですけど、落とし穴あったりするんですかね?
バッファリングモードには一応気をつけてるつもりですが、詰まらないようにflushを書き加えて再コンパイルしたり
さすがにインタプリタまでは手を入れませんが…
パイプ避けるとなると、
ファイルを100くらいに細かく割り、ループ内で各ファイルを順にメモリマップ、regex掛けて(マッチ情報、ファイル名、行番号)をdbmsに格納
目ぼしいマッチ情報をクエリで拾いながら、(ファイル名、行番号)でシークしてマッチ部分に処理を適用&db書き戻し
って感じになりますかね?
メモリに載らないのはパイプ、みたいにバカの一つ覚えしてるんですけど、落とし穴あったりするんですかね?
バッファリングモードには一応気をつけてるつもりですが、詰まらないようにflushを書き加えて再コンパイルしたり
さすがにインタプリタまでは手を入れませんが…
パイプ避けるとなると、
ファイルを100くらいに細かく割り、ループ内で各ファイルを順にメモリマップ、regex掛けて(マッチ情報、ファイル名、行番号)をdbmsに格納
目ぼしいマッチ情報をクエリで拾いながら、(ファイル名、行番号)でシークしてマッチ部分に処理を適用&db書き戻し
って感じになりますかね?
599デフォルトの名無しさん
2021/03/31(水) 13:39:03.95ID:jIuPTrt2 >>597
プロセスの使用メモリ見ながらバッファリングは調整してますが、regex処理系のメモリ使用量がI/Oの収支と合ってないのでキャッシュだと思います
プロセスの使用メモリ見ながらバッファリングは調整してますが、regex処理系のメモリ使用量がI/Oの収支と合ってないのでキャッシュだと思います
600デフォルトの名無しさん
2021/03/31(水) 14:03:15.96ID:c0V7LnWa highwayとかであかんの?
601デフォルトの名無しさん
2021/03/31(水) 14:18:33.85ID:AtIsL56M いや合ってるのかな…シェルの知識が乏しいので
基本はスループット最大化を目指してエンジンとパイプ前後のバッファリングモードを調整で合ってますよね?
linux/bashだと改行待ちで詰まりやすいのでstdbufが効くならそれで、効かないなら強制フラッシュ
win/pwsh6&7のパイプラインは逆にバッファリング殆ど貯めないようで、pythonだとio.Streamでかなり改善しました
>>600
詳しく!
regex highwayあたりでググってもノイズだらけです
基本はスループット最大化を目指してエンジンとパイプ前後のバッファリングモードを調整で合ってますよね?
linux/bashだと改行待ちで詰まりやすいのでstdbufが効くならそれで、効かないなら強制フラッシュ
win/pwsh6&7のパイプラインは逆にバッファリング殆ど貯めないようで、pythonだとio.Streamでかなり改善しました
>>600
詳しく!
regex highwayあたりでググってもノイズだらけです
602デフォルトの名無しさん
2021/03/31(水) 18:56:13.01ID:Vc5hrOQS 正規表現が向いてる用途かどうか微妙だなぁ
少ないデータ量で目的にあったライブラリを使ってみて性能の最適化はそれ次第だな
https://www.rdkit.org/docs_jp/Supplementary_Text_jp.html#jp-notes-6
データの中身と検索用途にあったデータベースに入れて
速度は並列度を上げるほうが楽でメンテもしやすくて速度も出やすいような
少ないデータ量で目的にあったライブラリを使ってみて性能の最適化はそれ次第だな
https://www.rdkit.org/docs_jp/Supplementary_Text_jp.html#jp-notes-6
データの中身と検索用途にあったデータベースに入れて
速度は並列度を上げるほうが楽でメンテもしやすくて速度も出やすいような
603デフォルトの名無しさん
2021/03/31(水) 19:14:36.42ID:AtIsL56M >>602
RDkitもちろん使ってるよー
SMILESの検索性上げたのがInChIで、その辺扱ったり、代表的な特徴量を生成するライブラリは沢山あるんだけど、もうやり尽くされた感じで
既存のデータが正規表現で扱う想定のフォーマットだから、まずは正規表現で引っ掛けて独自フォーマットに変換、という感じです
あと、勝手にオンラインから拾って来てくれたり便利なんだけど、10GB単位のリクエスト送りまくるとアク禁食らいそうだから、こっそりゴッソリ落としてきたw
PowerShellの正規表現がちゃんとコンパイルできる事や、パイプの属性が細かく指定できてかなり速い事に気付いた、灯台下暗し
ちょっとスレチぎみですまなかった
目処が付いたら効率的な正規表現とかまた相談に来ます
RDkitもちろん使ってるよー
SMILESの検索性上げたのがInChIで、その辺扱ったり、代表的な特徴量を生成するライブラリは沢山あるんだけど、もうやり尽くされた感じで
既存のデータが正規表現で扱う想定のフォーマットだから、まずは正規表現で引っ掛けて独自フォーマットに変換、という感じです
あと、勝手にオンラインから拾って来てくれたり便利なんだけど、10GB単位のリクエスト送りまくるとアク禁食らいそうだから、こっそりゴッソリ落としてきたw
PowerShellの正規表現がちゃんとコンパイルできる事や、パイプの属性が細かく指定できてかなり速い事に気付いた、灯台下暗し
ちょっとスレチぎみですまなかった
目処が付いたら効率的な正規表現とかまた相談に来ます
604デフォルトの名無しさん
2021/03/31(水) 23:36:10.16ID:1Z3UgTKy 正規表現を考えた人にノーベル賞を授与すべきと思うが
まだ生きているのか、何賞がいいのかなどよくわからない
まだ生きているのか、何賞がいいのかなどよくわからない
605デフォルトの名無しさん
2021/04/01(木) 18:26:16.61ID:+gZ88zdN606デフォルトの名無しさん
2021/04/01(木) 21:17:20.81ID:B5PjUTjB ed書いてたよね?あれが最初なのか
607デフォルトの名無しさん
2021/04/01(木) 21:58:44.86ID:6NDtmvbq 正規表現を考えたのはケン・トンプソンではないみたいだけど
608デフォルトの名無しさん
2021/04/02(金) 03:22:50.55ID:XNApZvfR Wikipedia見た限りでは、UNIXツールに導入したのはケン・トンプソンで間違いなさそう
オリジナルQED(正規表現なし)→CTSS版QED(ケン開発、正規表現導入)→Multics版QED→ed→vi→...の流れで合ってる?
#チラ裏
正規表現発展の歴史って
...→ed→(grep,sed)→awk→Perl→その他諸々
だと思ってたんだけと、カーニハン先生が去年出した(今頃気づいた)UNIX回顧録の目次見てたら、実際は
...→grep(UNIX第6版:1975)→sed,awk(UNIX第7版:1976-1979)→...
とawkがsedとほぼ同時期のリリースだったらしい事に気づいて今更びっくりしてる
AWK本の邦訳の出版が1989年だし、多分それで勘違いしてたんだな
...あれ?wikiぺ見たらsedの初登場は1973-74??じゃあ時系列自体は最初の認識であってるのかな
オリジナルQED(正規表現なし)→CTSS版QED(ケン開発、正規表現導入)→Multics版QED→ed→vi→...の流れで合ってる?
#チラ裏
正規表現発展の歴史って
...→ed→(grep,sed)→awk→Perl→その他諸々
だと思ってたんだけと、カーニハン先生が去年出した(今頃気づいた)UNIX回顧録の目次見てたら、実際は
...→grep(UNIX第6版:1975)→sed,awk(UNIX第7版:1976-1979)→...
とawkがsedとほぼ同時期のリリースだったらしい事に気づいて今更びっくりしてる
AWK本の邦訳の出版が1989年だし、多分それで勘違いしてたんだな
...あれ?wikiぺ見たらsedの初登場は1973-74??じゃあ時系列自体は最初の認識であってるのかな
609デフォルトの名無しさん
2021/04/02(金) 11:22:21.17ID:BO0mfYkz610デフォルトの名無しさん
2021/04/02(金) 11:40:50.71ID:ebi/L5xP 別に正規表現である意義もそんなにないと思うし、どうでもいいのでは?
611デフォルトの名無しさん
2021/04/02(金) 11:42:32.54ID:2zuzxBMS >>610
「正規表現でない」とは?
「正規表現でない」とは?
612デフォルトの名無しさん
2021/04/02(金) 23:12:52.23ID:2IXJa8pf613デフォルトの名無しさん
2021/04/02(金) 23:18:36.72ID:nU9EtL7E 論理の場で非論理的な煽り合いはやめて欲しい
614デフォルトの名無しさん
2021/04/03(土) 06:56:50.00ID:mJPsJJNM615デフォルトの名無しさん
2021/04/03(土) 13:40:38.89ID:vSOTAguS 609は、『604は「実装した人に賞を」とは言ってないじゃん(あくまで考案した人に賞を)』と言ってるにすぎん
616デフォルトの名無しさん
2021/04/03(土) 15:45:43.43ID:MnG7Frze 言ってもないことで絡まれる604が不憫だわ
基地害に絡まれるってこういうことなだな...
基地害に絡まれるってこういうことなだな...
617デフォルトの名無しさん
2021/04/03(土) 16:32:17.92ID:cg+oQawH >>616
不憫なのは君の頭の悪さだろうな
不憫なのは君の頭の悪さだろうな
618デフォルトの名無しさん
2021/04/03(土) 16:39:50.38ID:uAN7ehAC 604 「正規表現を考えた人にノーベル賞を授与すべき」
605「正規表現考えたのはケン・トンプソン」
(ケン・トンプソンはコンピュータ科学分野のノーベル賞と言われるチューリング賞を受賞済み)
607 「正規表現を考えたのはケン・トンプソンではない」
608 「Wikipedia見た限りでは、UNIXツールに導入したのはケン・トンプソンで間違い」
609 「UNIXツールに導入したのと正規表現を考案したのとは全然別」
この流れで下の文の意味が分からないなら小学校からやり直したほうがいい
「604は正規表現をUNIXツールに導入した人にノーベル賞授与すべきだと言ってるのかな?」
605「正規表現考えたのはケン・トンプソン」
(ケン・トンプソンはコンピュータ科学分野のノーベル賞と言われるチューリング賞を受賞済み)
607 「正規表現を考えたのはケン・トンプソンではない」
608 「Wikipedia見た限りでは、UNIXツールに導入したのはケン・トンプソンで間違い」
609 「UNIXツールに導入したのと正規表現を考案したのとは全然別」
この流れで下の文の意味が分からないなら小学校からやり直したほうがいい
「604は正規表現をUNIXツールに導入した人にノーベル賞授与すべきだと言ってるのかな?」
619デフォルトの名無しさん
2021/04/03(土) 17:01:43.10ID:jUXnOQwo 絡まれてるのは604ではなく609
ってとこまで読んだ
ってとこまで読んだ
620デフォルトの名無しさん
2021/04/03(土) 17:17:48.40ID:vSOTAguS 正に
609が不憫だ
609が不憫だ
621デフォルトの名無しさん
2021/04/03(土) 17:20:20.99ID:3054knRU622デフォルトの名無しさん
2021/04/03(土) 18:38:52.17ID:nkSIG8qO >>618
>608 「Wikipedia見た限りでは、UNIXツールに導入したのはケン・トンプソンで間違い」
608 「Wikipedia見た限りでは、UNIXツールに導入したのはケン・トンプソンで間違いない」
>608 「Wikipedia見た限りでは、UNIXツールに導入したのはケン・トンプソンで間違い」
608 「Wikipedia見た限りでは、UNIXツールに導入したのはケン・トンプソンで間違いない」
623デフォルトの名無しさん
2021/04/03(土) 19:36:29.47ID:fbz7uNem624デフォルトの名無しさん
2021/04/03(土) 20:58:53.19ID:vSOTAguS 「604は言ってないぞ」と609が指摘しただけ
その609になぜ食いつくんだよ
その609になぜ食いつくんだよ
625デフォルトの名無しさん
2021/04/03(土) 21:13:29.22ID:HBbZRCot まだ続くの?
626デフォルトの名無しさん
2021/04/03(土) 21:27:51.22ID:2eiD4/1n そんなに感情的になる要素見当たらないんだけど何に反応しちゃったのか?
627デフォルトの名無しさん
2021/04/03(土) 22:05:45.23ID:fbz7uNem628デフォルトの名無しさん
2021/04/03(土) 22:13:04.80ID:vSOTAguS えー誰でもそうとしか解釈できないだろ
629デフォルトの名無しさん
2021/04/03(土) 22:13:58.62ID:vSOTAguS あまりに国語力が平均以下なんだな
630デフォルトの名無しさん
2021/04/03(土) 22:22:18.05ID:vSOTAguS 発言者の意図したものとか行間を読むとかできないで、その表面しか見ないのはアスペの特徴とか
631デフォルトの名無しさん
2021/04/03(土) 22:41:29.99ID:AcE4W092 誰でも ⇒ ID:vSOTAguS のみ
まあこの後に単発が来るのかもしれないけどw
まあこの後に単発が来るのかもしれないけどw
632デフォルトの名無しさん
2021/04/03(土) 23:35:04.26ID:fsqx4uGu633デフォルトの名無しさん
2021/04/03(土) 23:40:31.67ID:jUXnOQwo 609の意図を理解できない読者がいる以上、「誰でも」という認識は誤解と思う
634デフォルトの名無しさん
2021/04/04(日) 02:08:54.97ID:842owbNJ 「〜だと言ってるのかな?」
これは
(実際には言ってやしないだろ?)と言う言葉が省略されてる
というか省略するのが普通で通常なら十分に読み取れるはず
これは
(実際には言ってやしないだろ?)と言う言葉が省略されてる
というか省略するのが普通で通常なら十分に読み取れるはず
635デフォルトの名無しさん
2021/04/04(日) 02:26:12.96ID:+j1dsc1H もうええやん
609の文章を正しく読み取る能力の無い奴にそもそもこの板は向いてない
609の文章を正しく読み取る能力の無い奴にそもそもこの板は向いてない
636デフォルトの名無しさん
2021/04/04(日) 02:42:10.15ID:zADfh3JJ 相手が日本語書いてるからと言って通じるとは限らない
言葉の通じないバカを言いくるめようとするからこうなる
相手に言葉が通じるか見極めるスキルと耐性・スルー力を身に着けろ
言葉の通じないバカを言いくるめようとするからこうなる
相手に言葉が通じるか見極めるスキルと耐性・スルー力を身に着けろ
637デフォルトの名無しさん
2021/04/04(日) 02:44:32.45ID:842owbNJ 喧嘩するにも同程度の知能を有してないとダメってことだな
638デフォルトの名無しさん
2021/04/04(日) 06:18:23.10ID:Da11tGDT 単発わらわら湧いてて笑うわ
どっちが必死なんだかw
どっちが必死なんだかw
639デフォルトの名無しさん
2021/04/07(水) 17:35:35.06ID:V6KO8k9b >>604 は単に偉大な先人に感謝してるだけだと思うんだが…
「正規表現を考えた人」って表現したのがまずかったのか?
「正規表現を考えた人」って表現したのがまずかったのか?
640デフォルトの名無しさん
2021/04/07(水) 17:51:25.47ID:tjlM1gbN もういいからやめろ
641デフォルトの名無しさん
2021/04/07(水) 23:04:12.41ID:Gfnmricb >>639
ちょっとアレな人が絡んできただけw
ちょっとアレな人が絡んできただけw
642デフォルトの名無しさん
2021/04/08(木) 11:35:26.71ID:GjjHuqzu まだおさまらないてどんだけ悔しかったんだよww
643デフォルトの名無しさん
2021/04/08(木) 11:39:17.18ID:ADplJe5S バカが身の程しらずにもこのスレに迷い込んでくるから
644デフォルトの名無しさん
2021/04/11(日) 15:15:06.07ID:gwmbiGIQ ●Regular Expressionの使用環境
C#
●検索か置換か?
置換
●説明
アダルトビデオDBから取得したタイトルの最後が
女優名だった場合は消したい
●対象データ
女優 |タイトル
-----------------------------
三上悠亜 |下着モデルをさせられて… フェチズム9ランジェリーSpecial 三上悠亜
三上悠亜 |三上悠亜のPLATINUM SOAP
高橋しょう子|バキュームフェラ大好きお姉さんのディープスロート・たっぷり射精・追撃おしゃぶり 高橋しょう子
高橋しょう子|高橋しょう子 初BEST 12タイトル720分
●希望する結果
女優 |タイトル
-----------------------------
三上悠亜 |下着モデルをさせられて… フェチズム9ランジェリーSpecial
三上悠亜 |三上悠亜のPLATINUM SOAP
高橋しょう子|バキュームフェラ大好きお姉さんのディープスロート・たっぷり射精・追撃おしゃぶり
高橋しょう子|高橋しょう子 初BEST 12タイトル720分
C#
●検索か置換か?
置換
●説明
アダルトビデオDBから取得したタイトルの最後が
女優名だった場合は消したい
●対象データ
女優 |タイトル
-----------------------------
三上悠亜 |下着モデルをさせられて… フェチズム9ランジェリーSpecial 三上悠亜
三上悠亜 |三上悠亜のPLATINUM SOAP
高橋しょう子|バキュームフェラ大好きお姉さんのディープスロート・たっぷり射精・追撃おしゃぶり 高橋しょう子
高橋しょう子|高橋しょう子 初BEST 12タイトル720分
●希望する結果
女優 |タイトル
-----------------------------
三上悠亜 |下着モデルをさせられて… フェチズム9ランジェリーSpecial
三上悠亜 |三上悠亜のPLATINUM SOAP
高橋しょう子|バキュームフェラ大好きお姉さんのディープスロート・たっぷり射精・追撃おしゃぶり
高橋しょう子|高橋しょう子 初BEST 12タイトル720分
645デフォルトの名無しさん
2021/04/11(日) 16:16:34.91ID:RGQ7rYBB ●Regular Expressionの使用環境
Windows PowerShell
●検索か置換か?
置換
●説明
「秒・コンマ」を「時・分・秒・コンマ」に置換
●対象データ
start="123.45"
●希望する結果
start="00:02:03.45"
よろしくお願いします
割り算の商とあまりはPowerShellの関数で
2 = [int](123/60)
3 = 123 % 60
で求められます
Windows PowerShell
●検索か置換か?
置換
●説明
「秒・コンマ」を「時・分・秒・コンマ」に置換
●対象データ
start="123.45"
●希望する結果
start="00:02:03.45"
よろしくお願いします
割り算の商とあまりはPowerShellの関数で
2 = [int](123/60)
3 = 123 % 60
で求められます
646デフォルトの名無しさん
2021/04/11(日) 16:38:01.79ID:j2wFoRQW 鬼雲
^(\S+)[ ]*|.+\K\s++\1$
^([^|]+)[ ]*|.+\K\s++\1$
.Net だとこんな感じ?未確認
(?<=^([^|]+?)\s*|.+)(?>\s+)\1$
空文字に置換
^(\S+)[ ]*|.+\K\s++\1$
^([^|]+)[ ]*|.+\K\s++\1$
.Net だとこんな感じ?未確認
(?<=^([^|]+?)\s*|.+)(?>\s+)\1$
空文字に置換
647デフォルトの名無しさん
2021/04/11(日) 17:10:39.69ID:Mhxpz1MA >>645
[TimeSpan]::new(([double]$start)*10000000).tostring("hh\:mm\:ss\.ff")
[TimeSpan]::new(([double]$start)*10000000).tostring("hh\:mm\:ss\.ff")
648デフォルトの名無しさん
2021/04/11(日) 21:30:29.49ID:LXnW0jT4 >>644
Ruby なら、そういう関数がある
delete_suffix!(suffix) -> self | nil
self の末尾から、破壊的に suffix を削除します
[PARAM] suffix:
末尾から削除する、文字列を指定します
[RETURN]
削除した場合は self、変化しなかった場合は nil
"hello".delete_suffix!("llo") # => "he"
"hello".delete_suffix!("hel") # => nil
Ruby なら、そういう関数がある
delete_suffix!(suffix) -> self | nil
self の末尾から、破壊的に suffix を削除します
[PARAM] suffix:
末尾から削除する、文字列を指定します
[RETURN]
削除した場合は self、変化しなかった場合は nil
"hello".delete_suffix!("llo") # => "he"
"hello".delete_suffix!("hel") # => nil
649645
2021/04/11(日) 21:41:09.21ID:RGQ7rYBB できました!
650デフォルトの名無しさん
2021/04/11(日) 21:55:24.47ID:Mhxpz1MA >>644
.replace(/^(([^\s| ]+)[\s ]*|.+?)[\s ]*\2[\s ]*$/gm, "$1")
.replace(/^(([^\s| ]+)[\s ]*|.+?)[\s ]*\2[\s ]*$/gm, "$1")
651デフォルトの名無しさん
2021/04/11(日) 22:20:20.90ID:Mhxpz1MA .replace(/^[ ]*(([^|]+)[ ]*|.+?)[ ]*\2[ ]*$/gm, "$1")
行先頭に空白がある場合が抜けてた(\sは半角スペースに変更)
姓名の間にスペースある場合も同じデータならマッチする
三上 悠亜 |下着モデルをさせられて… フェチズム9ランジェリーSpecial 三上 悠亜
行先頭に空白がある場合が抜けてた(\sは半角スペースに変更)
姓名の間にスペースある場合も同じデータならマッチする
三上 悠亜 |下着モデルをさせられて… フェチズム9ランジェリーSpecial 三上 悠亜
652デフォルトの名無しさん
2021/04/15(木) 17:26:54.76ID:n7ib2P7L phpの実装前提です。
以下のサイトについて質問です。
https://www.javadrive.jp/regex-basic/sample/index13.html
[a-zA-Z0-9_+-]+(.[a-zA-Z0-9_+-]+)*@
で以下のような文字列の表現らしいのですが、
aaaaaaaaaaa@
aaa.aaaaaaa@
aa.aa.aaaaa@
aa.aa.aa.aa@
この()の中にある.ピリオドって、メタ文字の意味ですか?
本来なら、
[a-zA-Z0-9_+-]+(/.[a-zA-Z0-9_+-]+)*@
が正しくないですか?
以下のサイトについて質問です。
https://www.javadrive.jp/regex-basic/sample/index13.html
[a-zA-Z0-9_+-]+(.[a-zA-Z0-9_+-]+)*@
で以下のような文字列の表現らしいのですが、
aaaaaaaaaaa@
aaa.aaaaaaa@
aa.aa.aaaaa@
aa.aa.aa.aa@
この()の中にある.ピリオドって、メタ文字の意味ですか?
本来なら、
[a-zA-Z0-9_+-]+(/.[a-zA-Z0-9_+-]+)*@
が正しくないですか?
653デフォルトの名無しさん
2021/04/15(木) 17:30:30.96ID:n7ib2P7L (ごめんなさい。上記修正です。。)
本来なら、
[a-zA-Z0-9_+-]+(\.[a-zA-Z0-9_+-]+)*@
が正しくないですか?
本来なら、
[a-zA-Z0-9_+-]+(\.[a-zA-Z0-9_+-]+)*@
が正しくないですか?
654デフォルトの名無しさん
2021/04/15(木) 18:09:09.76ID:2/Cpiffz 試せばすぐわかるやろ
https://regex101.com/r/weGCyh/1
https://regex101.com/r/weGCyh/1
655デフォルトの名無しさん
2021/04/15(木) 18:22:25.76ID:n7ib2P7L ありがとうございました。
こんなツール初めてしりました。
aaaaaあaaaaa@
↑でも合致しますので、ページの説明としては不適切におもいました。
こんなツール初めてしりました。
aaaaaあaaaaa@
↑でも合致しますので、ページの説明としては不適切におもいました。
656デフォルトの名無しさん
2021/04/15(木) 18:41:07.32ID:5RsSqrLU657デフォルトの名無しさん
2021/04/15(木) 18:43:40.23ID:n7ib2P7L >>656
ありがとうございました。確信がもてました!
ありがとうございました。確信がもてました!
658デフォルトの名無しさん
2021/04/16(金) 08:22:32.69ID:jY/tNYiK そんな糞サイトを見るのはやめた方がいい
659デフォルトの名無しさん
2021/04/18(日) 11:01:19.33ID:GrVz/jbm ●Regular Expressionの使用環境
C#
●検索か置換か?
検索
●説明
表のデータを名前付きでキャプチャしたい(year,month,day;open;high;low;close;volume)
日付 <td class="XXX">(?<year>\d{4})/(?<month>\d?\d)/(?<day>\d?\d)</td>
株価 <td>(?<open>[0-9,.]+)</td>\r\n
<td>(?<high>[0-9,.]+)</td>\r\n
<td>(?<low>[0-9,.]+)</td>\r\n
<td>(?<close>[0-9,.]+)</td>\r\n
<td>.*</td>\r\n<td>(?<volume>[0-9,.]+)</td>
●対象データ
<tr>
<td class="XXX">2021/04/02</td> 日付
<td class="YYY">8,510.0</td >始値
<td class="YYY">8,595.0</td> 高値
<td class="YYY">8,432.0</td> 安値
<td class="YYY">8,462.0</td> 終値
<td class="YYY">8,462.0</td> 調整後終値
<td class="YYY">4,337,300</td>出来高
</tr>
●希望する結果
<td class="XXX">(?<year>\d{4})/(?<month>\d?\d)/(?<day>\d?\d)</td>
または<td>(?<open>[0-9,.]+)</td>単独だと一致するが日付と株価を全部つなげると駄目なので一致するようにしたい
御教示よろしくお願いします
C#
●検索か置換か?
検索
●説明
表のデータを名前付きでキャプチャしたい(year,month,day;open;high;low;close;volume)
日付 <td class="XXX">(?<year>\d{4})/(?<month>\d?\d)/(?<day>\d?\d)</td>
株価 <td>(?<open>[0-9,.]+)</td>\r\n
<td>(?<high>[0-9,.]+)</td>\r\n
<td>(?<low>[0-9,.]+)</td>\r\n
<td>(?<close>[0-9,.]+)</td>\r\n
<td>.*</td>\r\n<td>(?<volume>[0-9,.]+)</td>
●対象データ
<tr>
<td class="XXX">2021/04/02</td> 日付
<td class="YYY">8,510.0</td >始値
<td class="YYY">8,595.0</td> 高値
<td class="YYY">8,432.0</td> 安値
<td class="YYY">8,462.0</td> 終値
<td class="YYY">8,462.0</td> 調整後終値
<td class="YYY">4,337,300</td>出来高
</tr>
●希望する結果
<td class="XXX">(?<year>\d{4})/(?<month>\d?\d)/(?<day>\d?\d)</td>
または<td>(?<open>[0-9,.]+)</td>単独だと一致するが日付と株価を全部つなげると駄目なので一致するようにしたい
御教示よろしくお願いします
660デフォルトの名無しさん
2021/04/18(日) 13:04:59.48ID:8BgTcnje 構造があるものは、正規表現では難しい。
スクレイピングは、Ruby で、nokogiri なら、
require 'nokogiri'
doc = Nokogiri::HTML(<<EOT)
<tr>
<td class="XXX">2021/04/02</td> 日付
<td class="YYY">8,510.0</td >始値
<td class="YYY">8,595.0</td> 高値
<td class="YYY">8,432.0</td> 安値
<td class="YYY">8,462.0</td> 終値
<td class="YYY">8,462.0</td> 調整後終値
<td class="YYY">4,337,300</td>出来高
</tr>
EOT
element = doc.at_css( 'tr > td.XXX' )
puts element.content
#=> 2021/04/02
elements = doc.css( 'tr > td.YYY' )
puts elements.map( &:content ).join( " : " )
#=> 8,510.0 : 8,595.0 : 8,432.0 : 8,462.0 : 8,462.0 : 4,337,300
スクレイピングは、Ruby で、nokogiri なら、
require 'nokogiri'
doc = Nokogiri::HTML(<<EOT)
<tr>
<td class="XXX">2021/04/02</td> 日付
<td class="YYY">8,510.0</td >始値
<td class="YYY">8,595.0</td> 高値
<td class="YYY">8,432.0</td> 安値
<td class="YYY">8,462.0</td> 終値
<td class="YYY">8,462.0</td> 調整後終値
<td class="YYY">4,337,300</td>出来高
</tr>
EOT
element = doc.at_css( 'tr > td.XXX' )
puts element.content
#=> 2021/04/02
elements = doc.css( 'tr > td.YYY' )
puts elements.map( &:content ).join( " : " )
#=> 8,510.0 : 8,595.0 : 8,432.0 : 8,462.0 : 8,462.0 : 4,337,300
661デフォルトの名無しさん
2021/04/18(日) 16:50:35.98ID:GrVz/jbm >660
回答有難うございます テストツールではじかれるのそういうことなんですか
perlでならCSSセレクタ使って取れるんですが遅くてRubyでも同じでしょうね
回答有難うございます テストツールではじかれるのそういうことなんですか
perlでならCSSセレクタ使って取れるんですが遅くてRubyでも同じでしょうね
662デフォルトの名無しさん
2021/04/18(日) 19:18:36.24ID:3ca8v7Vr >>659
対象データの各行の後ろに実際には日本語はないってことでいいんだよね?
対象データの各行の後ろに実際には日本語はないってことでいいんだよね?
663デフォルトの名無しさん
2021/04/18(日) 19:29:32.94ID:3ca8v7Vr 日付の正規表現省略</td>
<td class="YYY">(?<open>[0-9,.]+)</td>\s+<td class="YYY">(?<high>[0-9,.]+)</td>\s+以降の正規表現省略
C#(実質.NET?)の正規表現は詳しくないし試してないけど、
一般的なPerl5系列の正規表現なら\sのマッチ対象(ホワイトスペース)に
\rや\nも内包されてるので、
\s+で改行と<tdの前のスペースインデントに対応できると思う
<td class="YYY">(?<open>[0-9,.]+)</td>\s+<td class="YYY">(?<high>[0-9,.]+)</td>\s+以降の正規表現省略
C#(実質.NET?)の正規表現は詳しくないし試してないけど、
一般的なPerl5系列の正規表現なら\sのマッチ対象(ホワイトスペース)に
\rや\nも内包されてるので、
\s+で改行と<tdの前のスペースインデントに対応できると思う
664663
2021/04/18(日) 19:31:55.31ID:3ca8v7Vr >>663訂正
日付の正規表現省略</td>\s+<td class="YYY">(?<open>[0-9,.]+)</td>\s+<td class="YYY">(?<high>[0-9,.]+)</td>\s+以降の正規表現省略
日付の正規表現省略</td>\s+<td class="YYY">(?<open>[0-9,.]+)</td>\s+<td class="YYY">(?<high>[0-9,.]+)</td>\s+以降の正規表現省略
665デフォルトの名無しさん
2021/04/18(日) 19:33:30.21ID:KOpB5ISv 空白とか考慮してねんじゃねーの
提示されてるデータ見ても</td >始値だけ違ってるし
改行の扱いで転けてる可能性も
提示されてるデータ見ても</td >始値だけ違ってるし
改行の扱いで転けてる可能性も
666デフォルトの名無しさん
2021/04/18(日) 20:10:08.07ID:GrVz/jbm 対象データの後ろの日本語は注記で実際にはありません
667デフォルトの名無しさん
2021/04/18(日) 20:17:06.51ID:GrVz/jbm >663,664
有難うございました \s+ でつなげて上手くゆきました
有難うございました \s+ でつなげて上手くゆきました
668デフォルトの名無しさん
2021/04/18(日) 20:42:16.44ID:P53jdUzk Rubyくん=糖質w
669デフォルトの名無しさん
2021/04/23(金) 13:32:17.18ID:wRSxYRWl Pythonで以下の条件に当てはまる正規表現はどうしたら実現できるでしょうか。
半角英数字(大文字小文字)255文字までとハイフンのみOK
--の連続は不可。行末がハイフンで終わるのも不可
ここまではできてるんですが、どなたか知恵を頂きたいです。
^[a-zA-Z0-9-]*(?<!-)$
半角英数字(大文字小文字)255文字までとハイフンのみOK
--の連続は不可。行末がハイフンで終わるのも不可
ここまではできてるんですが、どなたか知恵を頂きたいです。
^[a-zA-Z0-9-]*(?<!-)$
670デフォルトの名無しさん
2021/04/23(金) 13:46:23.58ID:lAJIVY64 pythonなら正規表現だけで処理しなくても
抜き出した後に--が含まれるのを除くとかどうにでもなるだろ。
抜き出した後に--が含まれるのを除くとかどうにでもなるだろ。
671デフォルトの名無しさん
2021/04/23(金) 13:47:26.10ID:S2TaYi95 ^(?:(?!--)[a-zA-Z0-9-])*(?<!-)$
^(?!.*--)[a-zA-Z0-9-]*(?<!-)$
まあこの2つの書き方を覚えればいいんじゃない?
ただ空行もマッチしちゃうよ
^(?!.*--)[a-zA-Z0-9-]*(?<!-)$
まあこの2つの書き方を覚えればいいんじゃない?
ただ空行もマッチしちゃうよ
672669
2021/04/23(金) 14:25:42.69ID:wRSxYRWl673デフォルトの名無しさん
2021/04/23(金) 16:59:46.76ID:vxdqi9h5 自分で理解できない正規表現とか組み込んで、この先メンテナンスできるんだろうか。
一時的なことならいいが
一時的なことならいいが
674デフォルトの名無しさん
2021/04/23(金) 17:20:20.44ID:S2TaYi95 この程度見れば何してるか理解できるよね
2つは記述は似てるけど考え方が少し違う
2つは記述は似てるけど考え方が少し違う
675デフォルトの名無しさん
2021/04/23(金) 18:40:17.97ID:WE1AtRNI ^(?>-?+[a-z0-9]){0,255}$
676デフォルトの名無しさん
2021/04/23(金) 20:39:56.15ID:EZOqnzXJ 条件が曖昧なので2通り(定時回ってそうだが)
# ハイフン含めて255文字
^([0-9A-Za-z]|-(?!(-|$))){1,255}$
# ハイフンは255文字に含めない
^(-?[0-9A-Za-z]){1,255}$
>>675
試したら"?>"など知らんって言われた
# ハイフン含めて255文字
^([0-9A-Za-z]|-(?!(-|$))){1,255}$
# ハイフンは255文字に含めない
^(-?[0-9A-Za-z]){1,255}$
>>675
試したら"?>"など知らんって言われた
677デフォルトの名無しさん
2021/04/23(金) 21:20:25.48ID:S2TaYi95 ?+も無いみたい
678デフォルトの名無しさん
2021/04/24(土) 01:22:36.39ID:fpQdUE+5 先読み後読みは方言が多いものね
679デフォルトの名無しさん
2021/04/25(日) 23:25:43.60ID:AhiBFSkY 単純に ^(-?[a-zA-Z0-9])[0,255]$ とかで良かったんじゃないかな
680デフォルトの名無しさん
2021/04/25(日) 23:27:08.69ID:AhiBFSkY >>676と重複した。スマン
681669
2021/04/26(月) 16:56:04.35ID:SkU1AL8m みなさんありがとうございます。
こんな正規表現良く書いたねーって先輩のレビュアーに言われて、
詳しく説明してって言われたんですが説明できなかったので、
頂いた数々の秘技を頑張って理解していこうと思います。(定時まで)
こんな正規表現良く書いたねーって先輩のレビュアーに言われて、
詳しく説明してって言われたんですが説明できなかったので、
頂いた数々の秘技を頑張って理解していこうと思います。(定時まで)
682デフォルトの名無しさん
2021/05/07(金) 02:26:32.28ID:FTeVmJ7m 以前使っていた正規表現の質問専用スレが見当たらないからここで聞きたい
javascriptで以下のマッチングを行うとマッチするけど、キャプチャの分が取得されない。
どうしたらいいんだろう
let abc = "/abcd/357/1/";
let regex = /^\/abcd\/(\d+)\/\d+\/$/gi;
let result = abc.match(regex);
console.log(result.length);
この出力が1になる。(\d+)も含めた2になってほしい
javascriptで以下のマッチングを行うとマッチするけど、キャプチャの分が取得されない。
どうしたらいいんだろう
let abc = "/abcd/357/1/";
let regex = /^\/abcd\/(\d+)\/\d+\/$/gi;
let result = abc.match(regex);
console.log(result.length);
この出力が1になる。(\d+)も含めた2になってほしい
683デフォルトの名無しさん
2021/05/07(金) 02:44:53.78ID:O1URPzeE matchAllかwhile regex.exec(string) !== null
684デフォルトの名無しさん
2021/05/07(金) 03:03:26.43ID:FTeVmJ7m685デフォルトの名無しさん
2021/05/18(火) 11:17:29.67ID:XAxheHxj 元データ
1621299591.842348,378,666,111,84
これをサブパターンで以下のように抽出したいです。
1621299591.842348
378
666
111
84
最終的な目的としては、ZabbixでCSV形式ログから値を取りたいです。
いろんなサイトを参考にしてるんですが、簡単そうに見えてこれが実現できる例が見つけられず。
1621299591.842348,378,666,111,84
これをサブパターンで以下のように抽出したいです。
1621299591.842348
378
666
111
84
最終的な目的としては、ZabbixでCSV形式ログから値を取りたいです。
いろんなサイトを参考にしてるんですが、簡単そうに見えてこれが実現できる例が見つけられず。
686デフォルトの名無しさん
2021/05/18(火) 11:25:45.08ID:ZvUkaH8s ([^,]*)
じゃあかん?
じゃあかん?
687デフォルトの名無しさん
2021/05/18(火) 11:27:05.69ID:YmpO7+1q688デフォルトの名無しさん
2021/05/18(火) 12:29:17.50ID:AY6+4ZvQ689685
2021/05/18(火) 13:08:11.81ID:XAxheHxj ありがとうございます。
logrt["/var/log/^.*\.txt$","^([0-9]+).([0-9]+),([0-9]+),([0-9]+),([0-9]+),([0-9]+)$",,,,\3,,]
こんな感じでできました。
ご指摘通り\3のところを\4や\5にしたアイテムを別途作成。
logrt["/var/log/^.*\.txt$","^([0-9]+).([0-9]+),([0-9]+),([0-9]+),([0-9]+),([0-9]+)$",,,,\3,,]
こんな感じでできました。
ご指摘通り\3のところを\4や\5にしたアイテムを別途作成。
690デフォルトの名無しさん
2021/05/18(火) 14:48:27.97ID:AY6+4ZvQ >>689
ログファイルを指定するアイテムは1つにして
それに依存する依存アイテムを5つ作ったほうが処理効率がいいと思う
https://www.zabbix.com/documentation/current/manual/config/items/itemtypes/dependent_items
ログファイルを指定するアイテムは1つにして
それに依存する依存アイテムを5つ作ったほうが処理効率がいいと思う
https://www.zabbix.com/documentation/current/manual/config/items/itemtypes/dependent_items
692デフォルトの名無しさん
2021/05/20(木) 17:15:23.25ID:Bfk5GZud こんにちは
質問です
●Regular Expressionの使用環境
普通のテキストファイル
いま Sublime text を使ってますが無料のエディタなら何でも使います
●検索か置換か?
置換
●説明
各パラグラフの1行目を2行目以下の全ての行に加えたい
1行目はパラグラフごとに異なり、2行目以下はすべて異なる
●対象データ
/system/app
AntHalService
AutoRegistration
BasicDreams
/system/priv-app
AutoKillService
BackupRestoreConfirmation
●希望する結果
AntHalService^=/system/app/AntHalService
AutoRegistration^=/system/app/AutoRegistration
BasicDreams^=/system/app/BasicDreams
AutoKillService^=/system/priv-app/AutoKillService
BackupRestoreConfirmation^=/system/priv-app/BackupRestoreConfirmation
よろしくお願いします
質問です
●Regular Expressionの使用環境
普通のテキストファイル
いま Sublime text を使ってますが無料のエディタなら何でも使います
●検索か置換か?
置換
●説明
各パラグラフの1行目を2行目以下の全ての行に加えたい
1行目はパラグラフごとに異なり、2行目以下はすべて異なる
●対象データ
/system/app
AntHalService
AutoRegistration
BasicDreams
/system/priv-app
AutoKillService
BackupRestoreConfirmation
●希望する結果
AntHalService^=/system/app/AntHalService
AutoRegistration^=/system/app/AutoRegistration
BasicDreams^=/system/app/BasicDreams
AutoKillService^=/system/priv-app/AutoKillService
BackupRestoreConfirmation^=/system/priv-app/BackupRestoreConfirmation
よろしくお願いします
693デフォルトの名無しさん
2021/05/20(木) 17:34:20.04ID:HTt3W2mn 正規表現だけで可能なのか?
適当なスクリプト使った方が手っ取り早いような。
適当なスクリプト使った方が手っ取り早いような。
694デフォルトの名無しさん
2021/05/20(木) 17:50:54.95ID:yRtliBGo まずパラグラフをどう判断するかの条件も書かれてないしね
書かれてる2項目だけでいいならできるけど、
望むことはパラグラフの1行目の自動取得だろうし
書かれてる2項目だけでいいならできるけど、
望むことはパラグラフの1行目の自動取得だろうし
695デフォルトの名無しさん
2021/05/20(木) 17:55:02.71ID:HTt3W2mn696デフォルトの名無しさん
2021/05/20(木) 18:33:52.42ID:+Y6kAz1b 各段落1行目の前が空行でそれ以外に空行は無い とか
1行目行頭だけが"/"で他の行頭には"/"は無い とか
1行目だけが保ち得る条件が必要なのと
各段落の行数が同じで無いとキャプチャは出来ても置換で参照使えなくね?
・1行目の一意な条件
・段落の行数が一定
このふたつの条件満たさないと正規表現だけでは無理じゃね?
1行目行頭だけが"/"で他の行頭には"/"は無い とか
1行目だけが保ち得る条件が必要なのと
各段落の行数が同じで無いとキャプチャは出来ても置換で参照使えなくね?
・1行目の一意な条件
・段落の行数が一定
このふたつの条件満たさないと正規表現だけでは無理じゃね?
697デフォルトの名無しさん
2021/05/20(木) 18:58:29.37ID:+Y6kAz1b 段落の最大行数に合わせて置換式書いておいて置換後
2度目に 行頭が "^=" の行を削除 なら行数不定でも出来るだろうけど
美しくないしスクリプトの方が適してると思う
2度目に 行頭が "^=" の行を削除 なら行数不定でも出来るだろうけど
美しくないしスクリプトの方が適してると思う
698デフォルトの名無しさん
2021/05/20(木) 19:09:27.78ID:IKwP0pwO699692
2021/05/20(木) 19:35:18.66ID:Bfk5GZud みなさんありがとうございます
>>698
https://regex101.com/r/DcrdT0/1 のようにしても Sublime ではマッチしないんですが
おすすめのエディタはありますでしょうか?
また、
> エディタ代わりにこのページを使うならUpdate Regexは絶対にするなよ
なぜでしょうか?
>>698
https://regex101.com/r/DcrdT0/1 のようにしても Sublime ではマッチしないんですが
おすすめのエディタはありますでしょうか?
また、
> エディタ代わりにこのページを使うならUpdate Regexは絶対にするなよ
なぜでしょうか?
700デフォルトの名無しさん
2021/05/20(木) 20:05:29.92ID:w4VGBl/7701デフォルトの名無しさん
2021/06/24(木) 21:40:32.01ID:9+/dPFw/ ●Regular Expressionの使用環境
サクラエディタ
●検索か置換か?
検索(正規表現で色を付けるため)
●説明
各行の最後に現れる:の直後から行末までを一致させたい
●対象データ
intval:i:1
strval:s:0,1,563,11,1913,1033
●希望する結果
1
0,1,563,11,1913,1033
よろしくお願いします
サクラエディタ
●検索か置換か?
検索(正規表現で色を付けるため)
●説明
各行の最後に現れる:の直後から行末までを一致させたい
●対象データ
intval:i:1
strval:s:0,1,563,11,1913,1033
●希望する結果
1
0,1,563,11,1913,1033
よろしくお願いします
702デフォルトの名無しさん
2021/06/24(木) 22:02:05.04ID:oCTUQBV1 :と改行以外が行末まで続くんだろ
:([^:\n]*)$
お願いしないといけないようなところあるか?
どーせ:はハイライトしたくないとかだろうけど
肯定戻り読み(?<=regex)使うだけだよな
(?<=:)([^:\n]*)$
これお願いしないといけないようなところあるのか?
:([^:\n]*)$
お願いしないといけないようなところあるか?
どーせ:はハイライトしたくないとかだろうけど
肯定戻り読み(?<=regex)使うだけだよな
(?<=:)([^:\n]*)$
これお願いしないといけないようなところあるのか?
704デフォルトの名無しさん
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 複数行モード出なくても改行に一致させる事は可能ですか?
803デフォルトの名無しさん
2021/08/25(水) 23:49:57.87ID:HwQGLaDN 一致と呼んでいいのか分からないけど$が改行に対応すると思う
文字セットには使えないけどab(c|$)みたいな分岐は可能
文字セットには使えないけどab(c|$)みたいな分岐は可能
804デフォルトの名無しさん
2021/08/26(木) 04:30:31.47ID:UZ8JqWyB 複数行モードって何?
mオプション(マルチラインモード)のこと?
それとも逆にオプションなし通常の場合やsオプション(シングルラインモード)のこと?
これの違いは解説でも読めば分かるけど
^ $ . の動作の違いってだけだから、\n,\rはどの場合でも有効だよ
mオプション(マルチラインモード)のこと?
それとも逆にオプションなし通常の場合やsオプション(シングルラインモード)のこと?
これの違いは解説でも読めば分かるけど
^ $ . の動作の違いってだけだから、\n,\rはどの場合でも有効だよ
805デフォルトの名無しさん
2021/08/26(木) 08:14:39.00ID:nEHOiDh0 ありがとうございます
806デフォルトの名無しさん
2021/08/26(木) 15:15:16.56ID:Yy835424 JavaScriptの正規表現によるmatch検索で、「10918」ピッタリの数が存在するか調べたいときのことです
「1091」でも検索に引っかかってしまいます。
どうしたらよいでしょうか
以下の条件では10918だけでなく1091でも検索に引っ掛かります
let a = 1091;
new RegExp(`(?<!\d+)${a}(?!\d+)`, "i")
「1091」でも検索に引っかかってしまいます。
どうしたらよいでしょうか
以下の条件では10918だけでなく1091でも検索に引っ掛かります
let a = 1091;
new RegExp(`(?<!\d+)${a}(?!\d+)`, "i")
807デフォルトの名無しさん
2021/08/26(木) 15:17:19.26ID:Yy835424 >>806に追記
データは場合によっては「数字 数字 数字」になっており、そこから特定の数字だけ存在するか調べたいです
データは場合によっては「数字 数字 数字」になっており、そこから特定の数字だけ存在するか調べたいです
808デフォルトの名無しさん
2021/08/26(木) 15:44:49.58ID:K931sT/w \d+ → \\d
809デフォルトの名無しさん
2021/08/26(木) 16:01:36.08ID:a0WUR1Wk 関係ないけどlookbehind内で正規表現が使えない言語とか多いのな
810デフォルトの名無しさん
2021/08/26(木) 16:10:30.57ID:Yy835424 >>808
出来たありがとう
出来たありがとう
811デフォルトの名無しさん
2021/08/26(木) 17:04:06.18ID:/x6E5kVC 区切りがあるならlook aroundする必要ないよね
812デフォルトの名無しさん
2021/08/26(木) 19:13:53.21ID:1/m60R21813デフォルトの名無しさん
2021/08/27(金) 16:27:34.54ID:kYh+qXrW aa●abbbcccd□ddeee
aa□abbbcccd●ddeee
両方にヒット表現をお願いします
aa□abbbcccd●ddeee
両方にヒット表現をお願いします
814デフォルトの名無しさん
2021/08/27(金) 16:35:14.96ID:zrk6+77w ^a
815デフォルトの名無しさん
2021/08/27(金) 16:35:19.05ID:7nxBSwRn そのまんまであれば
aa[●□]abbbcccd[●□]ddeee
aa[●□]abbbcccd[●□]ddeee
816デフォルトの名無しさん
2021/08/27(金) 16:47:10.72ID:kYh+qXrW あ、そうか
aa●abbbcccd●ddeee
aa□abbbcccd□ddeee
はヒットしてほしくないのです
aa●abbbcccd●ddeee
aa□abbbcccd□ddeee
はヒットしてほしくないのです
817デフォルトの名無しさん
2021/08/27(金) 16:56:56.42ID:mGcBpOgN じゃあ
(aa●abbbcccd□ddeee|aa□abbbcccd●ddeee)
(aa●abbbcccd□ddeee|aa□abbbcccd●ddeee)
818デフォルトの名無しさん
2021/08/27(金) 17:06:33.96ID:kYh+qXrW819デフォルトの名無しさん
2021/08/27(金) 17:09:48.92ID:56S9Iaf9 全体をマッチ対象にしたいの?
820デフォルトの名無しさん
2021/08/27(金) 17:45:24.98ID:ldxLRyEW >>816
aa([●□])abbbcccd(?!\1)[●□]ddeee
aa([●□])abbbcccd(?!\1)[●□]ddeee
821デフォルトの名無しさん
2021/08/27(金) 19:46:53.21ID:FthY+dex EmEditorはしらないなー
(?m:(.*●.*□.*)|(.*□.*●.*))
(?m:(.*●.*□.*)|(.*□.*●.*))
822デフォルトの名無しさん
2021/08/28(土) 05:34:33.30ID:Z+kCS9um .+?([●□]).+(?!\1)[●□].+
823デフォルトの名無しさん
2021/08/28(土) 08:18:57.05ID:3w95mdWV >>818
そのダイアログはCtrl+Cでテキストコピーできると思うからググりやすいように
コピペしてほしいな
あとEmEditorはBoost.RegexとOnigmo(鬼雲)を使い分けられるから、
オプションでどっち使ってるのかも教えて
https://jp.emeditor.com/text-editor-features/history/new-in-version-15-7/
そのダイアログはCtrl+Cでテキストコピーできると思うからググりやすいように
コピペしてほしいな
あとEmEditorはBoost.RegexとOnigmo(鬼雲)を使い分けられるから、
オプションでどっち使ってるのかも教えて
https://jp.emeditor.com/text-editor-features/history/new-in-version-15-7/
824デフォルトの名無しさん
2021/08/28(土) 10:30:00.05ID:2Y0XlSPP >>823
---------------------------
EmEditor
---------------------------
The complexity of matching the regular expression exceeded predefined bounds. Try refactoring the regular expression to make each choice made by the state machine unambiguous. This exception is thrown to prevent "eternal" matches that take an indefinite period time to locate.
---------------------------
OK
---------------------------
例示してもらった表現いずれも同様のメッセージが出てましたが、なんとOnigmoに変更したら出なくなりました。
いろいろ新しく知ることが出来ました
---------------------------
EmEditor
---------------------------
The complexity of matching the regular expression exceeded predefined bounds. Try refactoring the regular expression to make each choice made by the state machine unambiguous. This exception is thrown to prevent "eternal" matches that take an indefinite period time to locate.
---------------------------
OK
---------------------------
例示してもらった表現いずれも同様のメッセージが出てましたが、なんとOnigmoに変更したら出なくなりました。
いろいろ新しく知ることが出来ました
825デフォルトの名無しさん
2021/08/28(土) 10:38:46.36ID:gjZsNEUJ (?!\1)ってどういう意味?
826デフォルトの名無しさん
2021/08/28(土) 11:02:34.45ID:o77XzsS5 >>825
「直前に"一つ目のパターン"がない位置」を指すメタ表現
「直前に"一つ目のパターン"がない位置」を指すメタ表現
827デフォルトの名無しさん
2021/08/28(土) 11:25:40.94ID:m2ZH6alf 日本語的には"直後に"じゃね?
読んで行く方向、カーソルの前方だとしても直前だと意味が逆転しそう
読んで行く方向、カーソルの前方だとしても直前だと意味が逆転しそう
828デフォルトの名無しさん
2021/08/28(土) 13:02:42.57ID:rTzGvJSm829デフォルトの名無しさん
2021/08/28(土) 13:33:13.98ID:gjZsNEUJ ありがとう完全に理解した
\1 は ([●□]) のことを指してて
(?!\1)[●□] で前の ([●□]) で選んだものと被らないようにしてるわけか
\1 は ([●□]) のことを指してて
(?!\1)[●□] で前の ([●□]) で選んだものと被らないようにしてるわけか
830デフォルトの名無しさん
2021/08/28(土) 15:08:17.46ID:F14AY+cI >>828
(?!\1) は「1つめの括弧で一致した内容はこの位置(の直後)には現れない」という言明
([●□]) が ● に一致したなら (?!\1) は (?!●)
([●□]) が □ に一致したなら (?!\1) は (?!□)
なので最初の [●□] と二つめの [●□] では必ず互いに異なる文字が一致する、という具合
(?!\1) は「1つめの括弧で一致した内容はこの位置(の直後)には現れない」という言明
([●□]) が ● に一致したなら (?!\1) は (?!●)
([●□]) が □ に一致したなら (?!\1) は (?!□)
なので最初の [●□] と二つめの [●□] では必ず互いに異なる文字が一致する、という具合
831デフォルトの名無しさん
2021/08/28(土) 15:43:56.56ID:rTzGvJSm >>830
ああなるほどありがとう!
ああなるほどありがとう!
832デフォルトの名無しさん
2021/09/03(金) 00:14:54.74ID:X1LFwexk ●Regular Expressionの使用環境
さくらエディタ
●検索か置換か?
検索
●説明
ある文字列を含まない形で最短一致させたい
●対象データ
「吾輩は猫」「吾輩は三毛猫」「吾輩は犬」「吾輩は犬」
という1行の文書です。
●希望する結果
「吾輩は猫」「吾輩は三毛猫」「吾輩は犬」「吾輩は犬」
^^^^^^^^^
「.*【猫を含まない】」
というような正規表現で、上記のように、
猫を含まない最初の「」に最短一致でマッチする結果を得たいのです。
どなたかお詳しい方、ご教示くださいませ
さくらエディタ
●検索か置換か?
検索
●説明
ある文字列を含まない形で最短一致させたい
●対象データ
「吾輩は猫」「吾輩は三毛猫」「吾輩は犬」「吾輩は犬」
という1行の文書です。
●希望する結果
「吾輩は猫」「吾輩は三毛猫」「吾輩は犬」「吾輩は犬」
^^^^^^^^^
「.*【猫を含まない】」
というような正規表現で、上記のように、
猫を含まない最初の「」に最短一致でマッチする結果を得たいのです。
どなたかお詳しい方、ご教示くださいませ
833デフォルトの名無しさん
2021/09/03(金) 00:17:33.53ID:X1LFwexk 連投すみません。
^^^^^^
がズレました。
「吾輩は猫」「吾輩は三毛猫」「吾輩は犬」「吾輩は犬」
のうち、3つ目のカギ括弧、
つまり、1つめの「吾輩は犬」にマッチする正規表現を探しております。
^^^^^^
がズレました。
「吾輩は猫」「吾輩は三毛猫」「吾輩は犬」「吾輩は犬」
のうち、3つ目のカギ括弧、
つまり、1つめの「吾輩は犬」にマッチする正規表現を探しております。
834デフォルトの名無しさん
2021/09/03(金) 00:36:24.12ID:OHAz9Fu/ 「[^猫]*?」
835デフォルトの名無しさん
2021/09/03(金) 02:33:55.38ID:X1LFwexk >>834
すいません><
例題を単純化しすぎました。
せっかくご回答いただいたのに申し訳ないです。
「吾輩はネコである」「吾輩はミケネコである」「吾輩は「ネコ」である」「吾輩はイヌである」
というように、排除したい文字列(ネコ)は複数文字なんです。さらに、カギ括弧が二重の可能性があります。
カギ括弧内にネコを含まないものなら、イヌ以外でもなにがマッチしても問題ありません。
左から見て内部に「ネコ」を含むカギ括弧を排除していき、最初にネコを含まないカギ括弧にマッチさせたいのです。
すいません><
例題を単純化しすぎました。
せっかくご回答いただいたのに申し訳ないです。
「吾輩はネコである」「吾輩はミケネコである」「吾輩は「ネコ」である」「吾輩はイヌである」
というように、排除したい文字列(ネコ)は複数文字なんです。さらに、カギ括弧が二重の可能性があります。
カギ括弧内にネコを含まないものなら、イヌ以外でもなにがマッチしても問題ありません。
左から見て内部に「ネコ」を含むカギ括弧を排除していき、最初にネコを含まないカギ括弧にマッチさせたいのです。
836デフォルトの名無しさん
2021/09/03(金) 02:34:57.11ID:1+MNr6V9 ^.*?\K「(?~猫|」)」
^.*?\K「[^猫」]*+」
^.*?\K「[^猫」]*+」
837デフォルトの名無しさん
2021/09/03(金) 02:39:58.48ID:1+MNr6V9 ^.*?\K「(?~ネコ|」)」
838デフォルトの名無しさん
2021/09/03(金) 02:56:17.42ID:X1LFwexk839デフォルトの名無しさん
2021/09/03(金) 03:09:51.13ID:X1LFwexk 「(?~ネコ|」)の、?~は、「不在繰り返し」というのですね。
ということは、「(?~ネコ|」)は、
「の後に、【ネコ】の不在繰り返し 又は 」がくるもの、という意味ですね。
不在繰り返しなんて便利な表現があったとは…
ご親切にありがとうございます。
ということは、「(?~ネコ|」)は、
「の後に、【ネコ】の不在繰り返し 又は 」がくるもの、という意味ですね。
不在繰り返しなんて便利な表現があったとは…
ご親切にありがとうございます。
840デフォルトの名無しさん
2021/09/04(土) 02:41:25.14ID:ExeocnPJ > ?~は、「不在繰り返し」というのですね
違う。?~ だけでは意味を成さない
(?~式) 「非包含オペレータ」 "式" を含まない文字列に一致する
式にあたる部分は "ネコ|」" なので "ネコ" と "」" を含まない文字列に一致
違う。?~ だけでは意味を成さない
(?~式) 「非包含オペレータ」 "式" を含まない文字列に一致する
式にあたる部分は "ネコ|」" なので "ネコ" と "」" を含まない文字列に一致
841デフォルトの名無しさん
2021/09/04(土) 10:50:54.40ID:vsW0UBqv 非包含オペレータと不在繰り返しは紛らわしいな
(?~ネコ)がネコのネにマッチするかしないか
(?~ネコ)がネコのネにマッチするかしないか
842デフォルトの名無しさん
2021/09/04(土) 11:49:17.86ID:KRHaMmez 「吾輩はネコである」
「(?~ネコ)」 不一致
「(?~ネコ)(?~ネコ)」 一致
「(?~(?=ネコ))(?~ネコ)」 不一致
「(?~(?=ネコ))(?~(?<=ネコ))」
「ネコ」 不一致
「吾輩はネコ」 一致
「吾輩はネコである」 不一致
「(?~(?=ネコ).)(?~.(?<=ネコ))」
「ネコ」 不一致
「吾輩はネコ」 不一致
「吾輩はネコである」 不一致
「(?~ネコ)」 不一致
「(?~ネコ)(?~ネコ)」 一致
「(?~(?=ネコ))(?~ネコ)」 不一致
「(?~(?=ネコ))(?~(?<=ネコ))」
「ネコ」 不一致
「吾輩はネコ」 一致
「吾輩はネコである」 不一致
「(?~(?=ネコ).)(?~.(?<=ネコ))」
「ネコ」 不一致
「吾輩はネコ」 不一致
「吾輩はネコである」 不一致
843デフォルトの名無しさん
2021/09/04(土) 15:57:28.08ID:e0R2hmQ/ この不在繰り返しを、Python3.6のreモジュールで書く方法はありますか?
844デフォルトの名無しさん
2021/09/08(水) 12:26:11.39ID:R6BptgGx むずすぎて全然分からん
まぁPythonで使えんみたいやしいいか
まぁPythonで使えんみたいやしいいか
845デフォルトの名無しさん
2021/09/08(水) 14:14:17.23ID:QqH5BAVe 文字列の否定は否定先読みで
re.findall("「(?:(?!ネコ).)*」", string)
re.findall("「(?:(?!ネコ).)*」", string)
846デフォルトの名無しさん
2021/09/08(水) 15:37:03.14ID:bwkSQigi (?~abc) "abc"に一致しない文字列に一致。"abc"の"a","ab","bc","c"に一致する
(?:(?!abc).)* "abc"の"a"に一致しない文字列
(?:.(?<!abc))* "abc"の"c"に一致しない文字列
abc に対し
(?~abc)c 一致
(?:(?!abc).)*c 不一致
(?:.(?<!abc))*c 一致
(?:(?!abc).)* "abc"の"a"に一致しない文字列
(?:.(?<!abc))* "abc"の"c"に一致しない文字列
abc に対し
(?~abc)c 一致
(?:(?!abc).)*c 不一致
(?:.(?<!abc))*c 一致
847デフォルトの名無しさん
2021/09/15(水) 04:13:47.03ID:2Sm06Jhf (?~式) 非包含式
(?~) 非包含オペレータ(演算子) (被演算子は~と)の間に内挿される)
/* 田中さんの元論文がこの使い分けを間違ってるわけだが */
概念を語る場合は、繰り返しや文字クラスや選択のように、単に「非包含」と呼ぶ
(?~) 非包含オペレータ(演算子) (被演算子は~と)の間に内挿される)
/* 田中さんの元論文がこの使い分けを間違ってるわけだが */
概念を語る場合は、繰り返しや文字クラスや選択のように、単に「非包含」と呼ぶ
848デフォルトの名無しさん
2021/09/17(金) 16:17:14.17ID:J/w/zJeW 自己肯定感の低い人が仕事できない本当の理由
https://www.youtube.com/watch?v=BZyX8g1XuXI
【致命的】個人で稼ぐのに向いていない人の特徴7選
https://www.youtube.com/watch?v=PqqCiMMHMy4
自己肯定感の低い人にオススメの副業5選
https://www.youtube.com/watch?v=n2uiQcMmOAg
【質問力】雑魚と思われてしまうダメな質問の仕方5選
https://www.youtube.com/watch?v=eQceW_AcJjM
集団の中で落ちこぼれ組がやりがちなこと
https://www.youtube.com/watch?v=6cuCPaRvAv0
【人気者の基準】有名にならないと言われない暴言3選
https://www.youtube.com/watch?v=YhK7zgvRha0
【本質】みんながフリーランスになれない本当の理由
https://www.youtube.com/watch?v=vA4hTswPgEg
https://www.youtube.com/watch?v=BZyX8g1XuXI
【致命的】個人で稼ぐのに向いていない人の特徴7選
https://www.youtube.com/watch?v=PqqCiMMHMy4
自己肯定感の低い人にオススメの副業5選
https://www.youtube.com/watch?v=n2uiQcMmOAg
【質問力】雑魚と思われてしまうダメな質問の仕方5選
https://www.youtube.com/watch?v=eQceW_AcJjM
集団の中で落ちこぼれ組がやりがちなこと
https://www.youtube.com/watch?v=6cuCPaRvAv0
【人気者の基準】有名にならないと言われない暴言3選
https://www.youtube.com/watch?v=YhK7zgvRha0
【本質】みんながフリーランスになれない本当の理由
https://www.youtube.com/watch?v=vA4hTswPgEg
849デフォルトの名無しさん
2021/09/27(月) 17:11:29.79ID:yz6wzePk 下記のソフトで書庫ファイルをリネームしたいのですが、正規表現が必須のようです。
どうかご教示をお願いできませんでしょうか。
https://www.vector.co.jp/soft/winnt/util/se481411.html
【書庫内のファイルの先頭に、親フォルダ名を追加したい】
例: ○X△.zip 内の 00.jpg~99.jpg を ○X△.zip.00jpg~○X△.zip.99.jpg にしたい
どうかご教示をお願いできませんでしょうか。
https://www.vector.co.jp/soft/winnt/util/se481411.html
【書庫内のファイルの先頭に、親フォルダ名を追加したい】
例: ○X△.zip 内の 00.jpg~99.jpg を ○X△.zip.00jpg~○X△.zip.99.jpg にしたい
850849
2021/09/27(月) 18:00:06.98ID:yz6wzePk 訂正させて下さい。
親フォルダ名じゃなく親ファイル名でした。
下記のソフトで書庫ファイルをリネームしたいのですが、正規表現が必須のようです。
どうかご教示をお願いできませんでしょうか。
https://www.vector.co.jp/soft/winnt/util/se481411.html
【書庫内のファイルの先頭に親ファイル名を追加したい】
例: ○X△.zip 内の 00.jpg~99.jpg を ○X△.zip.00jpg~○X△.zip.99.jpg にしたい
親フォルダ名じゃなく親ファイル名でした。
下記のソフトで書庫ファイルをリネームしたいのですが、正規表現が必須のようです。
どうかご教示をお願いできませんでしょうか。
https://www.vector.co.jp/soft/winnt/util/se481411.html
【書庫内のファイルの先頭に親ファイル名を追加したい】
例: ○X△.zip 内の 00.jpg~99.jpg を ○X△.zip.00jpg~○X△.zip.99.jpg にしたい
851デフォルトの名無しさん
2021/09/27(月) 18:20:46.41ID:QHV+6MAZ そのソフトの機能とあなたがしたい事が正確にはわからんが、
正規表現で自動でディレクトリ名は入らんよ。
それをやりたかったら普通はプログラミングの領域。
単に先頭に指定文字列を入れたいなら
検索:^
置換:○X△.zip
正規表現で自動でディレクトリ名は入らんよ。
それをやりたかったら普通はプログラミングの領域。
単に先頭に指定文字列を入れたいなら
検索:^
置換:○X△.zip
852デフォルトの名無しさん
2021/09/27(月) 18:36:25.58ID:W1wq+c4c >>849
^:○X△.zip
アーカイブ名を参照するメタ文字が用意されていれば別だけど、一般的には都度指定するしかない
もし処理対象アーカイブが一定数以上あったり、定期的に一定数以上のアーカイブに対して同処理が必要になることが予想される場合、自分なら、1) 作業フォルダに解凍、2) リネーム、3) 再圧縮、4) 元アーカイブに上書きコピー、5) 後片付け、を指定フォルダ以下のアーカイブに対して実行するバッチファイルを書いて、それを実行すると思う(7z)
^:○X△.zip
アーカイブ名を参照するメタ文字が用意されていれば別だけど、一般的には都度指定するしかない
もし処理対象アーカイブが一定数以上あったり、定期的に一定数以上のアーカイブに対して同処理が必要になることが予想される場合、自分なら、1) 作業フォルダに解凍、2) リネーム、3) 再圧縮、4) 元アーカイブに上書きコピー、5) 後片付け、を指定フォルダ以下のアーカイブに対して実行するバッチファイルを書いて、それを実行すると思う(7z)
853デフォルトの名無しさん
2021/09/27(月) 19:31:31.78ID:wTAYfgov >>850
親ファイル(zipファイルのことだよね?)の名前を人手で入れるなら
^:○X△.zip
みたいな感じで行けるんじゃね?
http://frostmoon.sa
kura.ne.jp/gui4reces/gui4reces0018ss_rename.png
親ファイル(zipファイルのことだよね?)の名前を人手で入れるなら
^:○X△.zip
みたいな感じで行けるんじゃね?
http://frostmoon.sa
kura.ne.jp/gui4reces/gui4reces0018ss_rename.png
854デフォルトの名無しさん
2021/09/27(月) 22:31:45.47ID:2WG9Jybb ファイル名に拡張子以外のドットは特別な理由でも無い限り使わないようにした方が良い
あと質問内容は正規表現では無くソフトの使い方のようなので微妙にスレチ
作者の宣伝?
あと質問内容は正規表現では無くソフトの使い方のようなので微妙にスレチ
作者の宣伝?
855デフォルトの名無しさん
2021/09/28(火) 09:31:17.72ID:fMeX4han 皆さん、ありがとうございます。
せっかくアドバイスを頂いたのですが、何が何やらさっぱりで・・・
せめて正規表現を少しでもかじってから再度教えを請いたいと考えていたので返信が遅れてしまいました。
しかし・・・
正規表現のサイトを少し覗いてみたのですが私には敷居が高すぎて・・
もう少し頑張ってみるつもりですが、かなりきつそうです
せっかくアドバイスを頂いたのですが、何が何やらさっぱりで・・・
せめて正規表現を少しでもかじってから再度教えを請いたいと考えていたので返信が遅れてしまいました。
しかし・・・
正規表現のサイトを少し覗いてみたのですが私には敷居が高すぎて・・
もう少し頑張ってみるつもりですが、かなりきつそうです
856デフォルトの名無しさん
2021/09/28(火) 09:38:51.90ID:ZQP3z5os >>855
アドバイスじゃなくて答えが書いてあるんだから、せめて試せよ
アドバイスじゃなくて答えが書いてあるんだから、せめて試せよ
857849
2021/09/28(火) 10:21:59.42ID:fMeX4han す、すみません。
検索文字列とか置換文字列とか難しく考えすぎて、
^:○X△.zip が回答そのものだったとは思いませんでした。
試してみました。
しかし、ログでは成功してるはずなのに実際のファイルはリネームされていません。
ソフトの使用方法がおぼつかないため、もう少し試行錯誤してみます。
とりあえずご報告だけさせて頂きました。
検索文字列とか置換文字列とか難しく考えすぎて、
^:○X△.zip が回答そのものだったとは思いませんでした。
試してみました。
しかし、ログでは成功してるはずなのに実際のファイルはリネームされていません。
ソフトの使用方法がおぼつかないため、もう少し試行錯誤してみます。
とりあえずご報告だけさせて頂きました。
858デフォルトの名無しさん
2021/09/28(火) 13:29:43.27ID:T0yrrR3v ○X△を○X△のまま使っただろ?
859849
2021/09/28(火) 20:59:21.69ID:fMeX4han 何でわかるんですかw
第一階層までしかリネームできないみたいです
そうなると、解凍してリネームして再圧縮が正解ですね。
バッチファイルは・・・・・・無理ですが
第一階層までしかリネームできないみたいです
そうなると、解凍してリネームして再圧縮が正解ですね。
バッチファイルは・・・・・・無理ですが
860デフォルトの名無しさん
2021/10/04(月) 16:07:06.15ID:N0nKW8hc 教えてください。
AAAA
AAAA(1)
AAAA(2)
AAAA(3)
という中から
()付きのものだけ抜き出す式はどう描くのでしょうか()の中身ではなくてAAA(3)などを丸ごとです。
お願いします。
AAAA
AAAA(1)
AAAA(2)
AAAA(3)
という中から
()付きのものだけ抜き出す式はどう描くのでしょうか()の中身ではなくてAAA(3)などを丸ごとです。
お願いします。
861デフォルトの名無しさん
2021/10/04(月) 16:24:14.46ID:bhYXHQji ^.*?¥(.*?¥)$
862デフォルトの名無しさん
2021/10/04(月) 17:32:08.96ID:N0nKW8hc863デフォルトの名無しさん
2021/10/04(月) 17:52:45.16ID:N0nKW8hc 次々すみません()の中は半角1文字の数字です。
864デフォルトの名無しさん
2021/10/04(月) 17:58:58.66ID:bhYXHQji865デフォルトの名無しさん
2021/10/04(月) 18:06:36.32ID:bhYXHQji あと、()が全角と半角では扱いが異なるから書き込むたびに変わってちゃダメ。
全角と半角両方に対応させたいなら^.*?[¥((][0-9][¥))]
全角と半角両方に対応させたいなら^.*?[¥((][0-9][¥))]
866デフォルトの名無しさん
2021/10/04(月) 19:38:23.48ID:zsq22U2a 拡張子は含めるの?
867デフォルトの名無しさん
2021/10/04(月) 19:42:51.89ID:qPYIGz+e .*\([0-9]\).*
868デフォルトの名無しさん
2021/10/15(金) 13:06:48.14ID:Wvwj+LKl うんこおおおおおおおおおお
↓
うんこ!!!!!!!!
ってjavascriptで正規表現で変換したいです
text.replace(/うん(こ)+/,"!")だと明らかに上手く行きませんがどうしたらよいのでしょうか?
↓
うんこ!!!!!!!!
ってjavascriptで正規表現で変換したいです
text.replace(/うん(こ)+/,"!")だと明らかに上手く行きませんがどうしたらよいのでしょうか?
869デフォルトの名無しさん
2021/10/15(金) 13:30:38.03ID:vygdYOMS 検索から違ってるし、function使わんと同回数繰り返すとかは無理
text.replace(/(うんこ)(.+)/,function(s,g1,g2){return g1+Array(g2.length+1).join('!')});
text.replace(/(うんこ)(.+)/,function(s,g1,g2){return g1+Array(g2.length+1).join('!')});
870デフォルトの名無しさん
2021/10/16(土) 08:23:59.89ID:akCvqHZs 先頭が-か+か0-9
以降0-9のみ
はどう書きますか?
-123 OK
12+3 NG
以降0-9のみ
はどう書きますか?
-123 OK
12+3 NG
871デフォルトの名無しさん
2021/10/16(土) 08:43:22.00ID:6ga3nra2 ^[\-+]?[0-9]+
872デフォルトの名無しさん
2021/10/16(土) 09:35:59.80ID:yphHFJu4 1つ目の文字クラスの中の円マークはなに?
873デフォルトの名無しさん
2021/10/16(土) 09:45:33.38ID:yphHFJu4 文字クラスの1文字目で使う場合には範囲指定と誤解される可能性はないから、エスケープ不要なのでは、という疑問です
874デフォルトの名無しさん
2021/10/16(土) 09:59:33.13ID:6ga3nra2 >>873
エスケープをつけておいたほうが人間にとって読みやすく、後々パターンを改変した時にミスせずにすむ
エスケープをつけておいたほうが人間にとって読みやすく、後々パターンを改変した時にミスせずにすむ
875デフォルトの名無しさん
2021/10/16(土) 10:04:58.76ID:6ga3nra2 「○○してもいい」が「○○しなければならない」に置き換わってしまう人たまにいるけど、あまりPGに向いてないかもね
876デフォルトの名無しさん
2021/10/16(土) 10:40:42.04ID:Yt5Fp2tM 悔しそう
877デフォルトの名無しさん
2021/10/16(土) 10:48:25.13ID:PMQb3sBw 質問者より先に回答者に対してあーだこーだ言ってくる奴にロクな奴はいない
と同時に質問者の自演の可能性もある
>>872-873みたいなのは分かってて聞いてるからそういうレスこそ不要なのでは、という疑問です
と同時に質問者の自演の可能性もある
>>872-873みたいなのは分かってて聞いてるからそういうレスこそ不要なのでは、という疑問です
878デフォルトの名無しさん
2021/10/16(土) 11:02:19.42ID:+QyAV8Aw 悔しそう
879デフォルトの名無しさん
2021/10/16(土) 11:15:38.86ID:6ga3nra2 あまり偏屈な人は回答しないほうがいいと思うけど、現実世界で阻害されている偏屈な人ほどねじ曲がった回答に生きがいを見出してしまう
880デフォルトの名無しさん
2021/10/16(土) 11:24:47.28ID:PMQb3sBw 機械から見て無駄のない極力短い正規表現を作れる俺カッコイイみたいな自己満な人もいるからねえ
おれは、ぱっと見て分かりやすいとか修正しやすい書き方するなあ
そうすることでデメリットが多くなってしまうなら別だけどね
まぁケチ付けることが目的の人がいても仕方ないけど
おれは、ぱっと見て分かりやすいとか修正しやすい書き方するなあ
そうすることでデメリットが多くなってしまうなら別だけどね
まぁケチ付けることが目的の人がいても仕方ないけど
881デフォルトの名無しさん
2021/10/16(土) 11:25:33.22ID:xOMo/rXl けど...しまう
882デフォルトの名無しさん
2021/10/16(土) 11:27:32.20ID:PMQb3sBw 本当に知識がある人は知識マウント取らずに、
なぜそういう回答をしているのか推察できるからいちいち突っ込まない
どうしても回答したい場合は、他の回答者には触れず回答だけ書く
なぜそういう回答をしているのか推察できるからいちいち突っ込まない
どうしても回答したい場合は、他の回答者には触れず回答だけ書く
883デフォルトの名無しさん
2021/10/16(土) 11:42:35.80ID:y3W2HSwc 874だけで終わっとけば良かったのにw
884デフォルトの名無しさん
2021/10/16(土) 11:52:56.32ID:yYNJhuOF 自演バレバレでも「悔しそう」に反応せずにはいられなかったんだろ
長文が自己紹介過ぎて笑える
長文が自己紹介過ぎて笑える
885デフォルトの名無しさん
2021/10/16(土) 11:59:55.88ID:6ga3nra2 MUST、SHOULD、MAYの理解が不完全な人はなんでもMUST扱いしたがる
冗長性を理解できない着物警察の思考様式
冗長性を理解できない着物警察の思考様式
886デフォルトの名無しさん
2021/10/16(土) 12:03:18.95ID:qP61rC0r おれも-はエスケープするな
つか+もエスケープする
エスケープ可能なのはエスケープしとく
つか+もエスケープする
エスケープ可能なのはエスケープしとく
887デフォルトの名無しさん
2021/10/16(土) 12:30:42.49ID:9AQLH6H/ 俺は極力しない
888デフォルトの名無しさん
2021/10/16(土) 12:33:05.07ID:FxLIumwg しないんじゃないかな
889デフォルトの名無しさん
2021/10/16(土) 12:39:14.15ID:igFsF4z+ ま ちょっと覚悟はしておけ
890デフォルトの名無しさん
2021/10/16(土) 12:41:17.72ID:BzHPp6pT なんとなくプラスマイナスの順にしたいから ^[+\-]?[0-9]+ って書くかな
891デフォルトの名無しさん
2021/10/16(土) 12:47:32.25ID:akCvqHZs 質問者です
pythonなのでエスケープはr文字列頼りです
ところで871のだと
12+3 は 12,+3で取れますが
正規表現を使った、文字列の判定がしたいのです
例挙げたように、頭は-+0-9 以降0-9のみで構成された文字列のみTrue、それ以外はFalseしたい
一応 if len(re.findall(pat, s)) == 1 かどうかで判定できてる気がするけど
方法としてはこれでいいんですよね?
すいません正規表現関係なくて
pythonなのでエスケープはr文字列頼りです
ところで871のだと
12+3 は 12,+3で取れますが
正規表現を使った、文字列の判定がしたいのです
例挙げたように、頭は-+0-9 以降0-9のみで構成された文字列のみTrue、それ以外はFalseしたい
一応 if len(re.findall(pat, s)) == 1 かどうかで判定できてる気がするけど
方法としてはこれでいいんですよね?
すいません正規表現関係なくて
892デフォルトの名無しさん
2021/10/16(土) 12:53:25.01ID:akCvqHZs しかもハット忘れて偶然できてただけだっった(笑)
うーむ
うーむ
893デフォルトの名無しさん
2021/10/16(土) 12:59:33.37ID:akCvqHZs ^[-+]?[0-9]+$
こうか
こうか
894デフォルトの名無しさん
2021/10/16(土) 13:52:27.11ID:wy7RR+Lb >>891
re.fullmatchで
re.fullmatchで
895デフォルトの名無しさん
2021/10/16(土) 14:12:10.41ID:UbsVp7JO fullmatchってあったのか
そりゃそうか
そりゃそうか
896デフォルトの名無しさん
2021/10/16(土) 14:38:49.46ID:6SnREp4P 正規表現スレで、円マークという誤解を招く表現はやめてほしい
バックスラッシュと表現すれば誤解を招かない
バックスラッシュと表現すれば誤解を招かない
897デフォルトの名無しさん
2021/10/16(土) 15:20:00.23ID:1kPG7eLG 回答で円記号を使われるのは気になる
わざわざ置き換え指示するくらいなら最初から正しく書けばいいのに
わざわざ置き換え指示するくらいなら最初から正しく書けばいいのに
898デフォルトの名無しさん
2021/10/16(土) 15:25:19.02ID:CFrnAbxP 承認欲求を満たせないと見るや他人を下げて自分を上げようとする人は
自己評価は高いんだけど周りからの評価は低く不満を溜め込んでるタイプ
5chあるあるだけど中には粘着する人もいるので気をつけようね
自己評価は高いんだけど周りからの評価は低く不満を溜め込んでるタイプ
5chあるあるだけど中には粘着する人もいるので気をつけようね
899デフォルトの名無しさん
2021/10/16(土) 16:28:23.09ID:q69AYoXR ID:6ga3nra2のことか
900デフォルトの名無しさん
2021/10/16(土) 16:51:02.62ID:UUKQ6Z7Y >>899
おしい!
おしい!
901デフォルトの名無しさん
2021/10/16(土) 17:35:12.23ID:VO4IgATZ "質問者"や"回答者"という立場を異常に強調するのは
"質問者"の承認が欲しくて堪らないから
承認が得られない場合や承認を得ることを邪魔された(と感じた)ら
自己防衛のために他者を攻撃する
攻撃の度合いが強い人ほど病んでる度合いも強い
"質問者"の承認が欲しくて堪らないから
承認が得られない場合や承認を得ることを邪魔された(と感じた)ら
自己防衛のために他者を攻撃する
攻撃の度合いが強い人ほど病んでる度合いも強い
902デフォルトの名無しさん
2021/10/16(土) 17:49:26.91ID:hNeyEW9L 「俺は\でエスケープしてるけど気になるなら取ってくれ」
で済ませられなかったのかねえ
で済ませられなかったのかねえ
903デフォルトの名無しさん
2021/10/16(土) 18:00:14.65ID:QrnrtPBD >○○してもいい」が「○○しなければならない」に置き換わってしまう人
これ自分の紹介かよ
エスケープしなければならない病に罹ってるな
これ自分の紹介かよ
エスケープしなければならない病に罹ってるな
904デフォルトの名無しさん
2021/10/16(土) 18:03:05.28ID:a3RnthCp 香ばしい奴にイチイチ構うな
そうやって相手するからそこに価値を見出してレス乞食へと変質して行くんだ
スルー出来ないおまえらも似たようなガイジ予備軍
そうやって相手するからそこに価値を見出してレス乞食へと変質して行くんだ
スルー出来ないおまえらも似たようなガイジ予備軍
905デフォルトの名無しさん
2021/10/16(土) 18:03:38.95ID:r+1DV466 >>883 に一票
まあそういう所にしか突っ込めない人がいるって思ってりゃいいかと
まあそういう所にしか突っ込めない人がいるって思ってりゃいいかと
906デフォルトの名無しさん
2021/10/16(土) 18:21:20.67ID:6ga3nra2 なにか勘違いしている人多いみたいなんで説明しとく
そもそもcharactter rangeでの先頭または末尾での-を明確に定義しているのはPerlとPythonぐらいしかなく、
正規表現ライブラリのpcre, re2, boost, Onigmo いずれの文書にも記述はない。
よってpcre, re2, boost, Onigmoで"[-az]", "[az-]", "[a\-z]" が同じ動作をする保証はない。
以下に示したOnigmoの文法説明では182行目で明確に'-'の使用を求めている。
https://github.com/k-takata/Onigmo/blob/master/doc/RE.ja
そもそもcharactter rangeでの先頭または末尾での-を明確に定義しているのはPerlとPythonぐらいしかなく、
正規表現ライブラリのpcre, re2, boost, Onigmo いずれの文書にも記述はない。
よってpcre, re2, boost, Onigmoで"[-az]", "[az-]", "[a\-z]" が同じ動作をする保証はない。
以下に示したOnigmoの文法説明では182行目で明確に'-'の使用を求めている。
https://github.com/k-takata/Onigmo/blob/master/doc/RE.ja
907デフォルトの名無しさん
2021/10/16(土) 18:26:32.71ID:6ga3nra2 誤:以下に示したOnigmoの文法説明では182行目で明確に'-'の使用を求めている。
正:以下に示したOnigmoの文法説明では182行目で明確に'-\'の使用を求めている。
https://github.com/k-takata/Onigmo/blob/master/doc/RE.ja
grepコマンドの組み込み正規表現の場合、文字集合で'-'を指定できるのは末尾のみ。以下にURLを添えとく。
https://linuxjm.osdn.jp/html/GNU_grep/man1/grep.1.html
正:以下に示したOnigmoの文法説明では182行目で明確に'-\'の使用を求めている。
https://github.com/k-takata/Onigmo/blob/master/doc/RE.ja
grepコマンドの組み込み正規表現の場合、文字集合で'-'を指定できるのは末尾のみ。以下にURLを添えとく。
https://linuxjm.osdn.jp/html/GNU_grep/man1/grep.1.html
908デフォルトの名無しさん
2021/10/16(土) 18:37:49.95ID:6ga3nra2 ちなみに、仕様書に先頭末尾の'-'に関する記述がないpcreやOnigmoでも"[-az]", "[az-]", "[a\-z]" が同じ動作をするのでひとまず安心していい
909デフォルトの名無しさん
2021/10/16(土) 18:50:30.23ID:hNeyEW9L C#等、javascript,Powershell,WSH、Rubyなど全部同じ動作する
エスケープを強要するものがあるのなら実例を出してみろよ
エスケープを強要するものがあるのなら実例を出してみろよ
910デフォルトの名無しさん
2021/10/16(土) 18:58:45.87ID:6ga3nra2 念のため書いとくが、Java正規表現にも.NET正規表現にも文字集合の先頭末尾エスケープなしハイフンに関する記述は見当たらない
Javaの正規表現
https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/util/regex/Pattern.html
.NET の正規表現
https://docs.microsoft.com/ja-jp/dotnet/standard/base-types/regular-expression-language-quick-reference
Javaの正規表現
https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/util/regex/Pattern.html
.NET の正規表現
https://docs.microsoft.com/ja-jp/dotnet/standard/base-types/regular-expression-language-quick-reference
911デフォルトの名無しさん
2021/10/16(土) 19:02:53.95ID:6ga3nra2912デフォルトの名無しさん
2021/10/16(土) 19:03:26.64ID:hNeyEW9L913デフォルトの名無しさん
2021/10/16(土) 19:12:04.98ID:nVB+19gH >>910
> .NET正規表現にも文字集合の先頭末尾エスケープなしハイフンに関する記述は見当たらない
明示はしてないけど
a hyphen character (-) is always interpreted as the range separator unless it is the first or last character of the group.
って書いてあるから最初か最後なら範囲文字として解釈はされないだろうね
で最初の文字のケースはないけど最後の文字のケースは例示されてる
[\s-] ⇒ Match a hyphen or a white-space character.
https://docs.microsoft.com/en-us/dotnet/standard/base-types/character-classes-in-regular-expressions
> .NET正規表現にも文字集合の先頭末尾エスケープなしハイフンに関する記述は見当たらない
明示はしてないけど
a hyphen character (-) is always interpreted as the range separator unless it is the first or last character of the group.
って書いてあるから最初か最後なら範囲文字として解釈はされないだろうね
で最初の文字のケースはないけど最後の文字のケースは例示されてる
[\s-] ⇒ Match a hyphen or a white-space character.
https://docs.microsoft.com/en-us/dotnet/standard/base-types/character-classes-in-regular-expressions
914デフォルトの名無しさん
2021/10/16(土) 19:12:23.95ID:6ga3nra2915デフォルトの名無しさん
2021/10/16(土) 19:17:00.69ID:6ga3nra2916デフォルトの名無しさん
2021/10/16(土) 19:23:50.02ID:6ga3nra2 Onigmoなにそれうまいの、という人のために説明しとくとサクラエディタの正規表現はOnigmoを採用してる
917デフォルトの名無しさん
2021/10/16(土) 19:27:24.61ID:BO6yK2Ly C++の正規表現クラスは引数でJavascriptの正規表現を選べます。
これは良いかもしれない。
これは良いかもしれない。
918デフォルトの名無しさん
2021/10/16(土) 19:30:44.77ID:ciQBbSHj (規格確認してないけど)そもそもC++のstd::regexってECMA-262の規格を参照, になってなかったっけ
Boost::RegexはPCRE2とかの表現力があったけど標準入りの時点で文書化された規格参照になってた記憶
Boost::RegexはPCRE2とかの表現力があったけど標準入りの時点で文書化された規格参照になってた記憶
919デフォルトの名無しさん
2021/10/16(土) 19:35:15.45ID:BO6yK2Ly std::regexはgrepとかawkとかあまりうれしい人が居無さそうなオプションもあるんだけど、ECMAScriptは多くの人がうれしくなるのでは?
920デフォルトの名無しさん
2021/10/16(土) 19:47:08.22ID:1zNIFcv9 WSHの正規表現って言語エンジン(VBScript、JScript等)それぞれで実装されてるのかと思ってたけど、俺の勘違い?
.NETの正規表現エンジンが使われることがあったりする?
.NETの正規表現エンジンが使われることがあったりする?
921デフォルトの名無しさん
2021/10/16(土) 20:29:00.06ID:Kqq2n1Gw マジキモいっすね
エスケープするしないの問題じゃないのに「なにか勘違いしてる人多いみたいなんで説明しとく」てwww
エスケープするしないの問題じゃないのに「なにか勘違いしてる人多いみたいなんで説明しとく」てwww
922デフォルトの名無しさん
2021/10/16(土) 20:37:45.55ID:wy7RR+Lb PCREに明記されてるからね
https://www.pcre.org/original/doc/html/pcrepattern.html#SEC9
The minus (hyphen) character can be used to specify a range of characters in a character class. For example, [d-m] matches any letter between d and m, inclusive. If a minus character is required in a class, it must be escaped with a backslash or appear in a position where it cannot be interpreted as indicating a range, typically as the first or last character in the class, or immediately after a range.
https://www.pcre.org/original/doc/html/pcrepattern.html#SEC9
The minus (hyphen) character can be used to specify a range of characters in a character class. For example, [d-m] matches any letter between d and m, inclusive. If a minus character is required in a class, it must be escaped with a backslash or appear in a position where it cannot be interpreted as indicating a range, typically as the first or last character in the class, or immediately after a range.
923デフォルトの名無しさん
2021/10/16(土) 20:39:03.57ID:I2E7AJLT924デフォルトの名無しさん
2021/10/16(土) 20:43:45.26ID:75KO56vr 論理的に反論できなくなると人格攻撃するしかなくなっちゃうんだろうね
925デフォルトの名無しさん
2021/10/16(土) 20:50:25.14ID:hNeyEW9L >>922
さすがに[b-d-z]は気持ち悪いな
さすがに[b-d-z]は気持ち悪いな
926デフォルトの名無しさん
2021/10/16(土) 20:56:26.53ID:kPRtjNBv927デフォルトの名無しさん
2021/10/16(土) 20:56:48.25ID:6ga3nra2928デフォルトの名無しさん
2021/10/16(土) 21:00:15.89ID:hNeyEW9L929デフォルトの名無しさん
2021/10/16(土) 21:00:48.73ID:6ga3nra2 >>926
仕様外動作に備えてエスケープは必要、というのが回答になると思いますけどね
仕様外動作に備えてエスケープは必要、というのが回答になると思いますけどね
930デフォルトの名無しさん
2021/10/16(土) 21:02:06.43ID:6ga3nra2931デフォルトの名無しさん
2021/10/16(土) 21:05:15.08ID:hNeyEW9L932デフォルトの名無しさん
2021/10/16(土) 21:12:06.82ID:6ga3nra2933デフォルトの名無しさん
2021/10/16(土) 21:12:31.27ID:PMQb3sBw934886
2021/10/16(土) 21:15:28.50ID:75KO56vr 思ってたよりエスケープ可能なのはエスケープする人はいないもんなんだな
オレは機械的にエスケープしてるのも少なくないのでより多めではあるんだろうけど
オレは機械的にエスケープしてるのも少なくないのでより多めではあるんだろうけど
935デフォルトの名無しさん
2021/10/16(土) 21:17:13.92ID:hNeyEW9L936デフォルトの名無しさん
2021/10/16(土) 21:24:54.32ID:6ga3nra2 >>935
仕様に明記されてないということは「仕様外」という意味にしかならないよ
書くべきと思い込んでいるのはあなたのほうだし、技術板で哲学とかなにを言いたいのかわからないし
精神病んで休職してるのが伝わってくるから、そのくらいにしとけば?
仕様に明記されてないということは「仕様外」という意味にしかならないよ
書くべきと思い込んでいるのはあなたのほうだし、技術板で哲学とかなにを言いたいのかわからないし
精神病んで休職してるのが伝わってくるから、そのくらいにしとけば?
937デフォルトの名無しさん
2021/10/16(土) 21:31:11.06ID:iYaW2gC3938デフォルトの名無しさん
2021/10/16(土) 21:33:41.76ID:hNeyEW9L939デフォルトの名無しさん
2021/10/16(土) 21:36:54.55ID:PMQb3sBw 質問者と回答者(ID:6ga3nra2)が同一人物で自演って事?
940デフォルトの名無しさん
2021/10/16(土) 21:43:42.85ID:6ga3nra2941デフォルトの名無しさん
2021/10/16(土) 21:54:38.21ID:6ga3nra2 Microsoft Beefs Up VBScript with Regular Expressions
https://docs.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/scripting-articles/ms974570(v=msdn.10)?redirectedfrom=MSDN
Regular Expression Syntax (JavaScript)
https://docs.microsoft.com/en-us/previous-versions/1400241x(v=vs.100)
https://docs.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/scripting-articles/ms974570(v=msdn.10)?redirectedfrom=MSDN
Regular Expression Syntax (JavaScript)
https://docs.microsoft.com/en-us/previous-versions/1400241x(v=vs.100)
942デフォルトの名無しさん
2021/10/16(土) 21:57:37.86ID:kP7MiIn1 色々な意味や方面でガチの人は理解しないし理解されないよなあ
943デフォルトの名無しさん
2021/10/16(土) 22:11:08.63ID:caYv+2Nn ホモ以外は帰れ
944デフォルトの名無しさん
2021/10/16(土) 22:24:05.01ID:6ga3nra2 むしろホモが帰れ
945デフォルトの名無しさん
2021/10/16(土) 23:17:21.33ID:senq7Tfg あやふやだったら全部エスケープすればまぁ動く
同僚やlinterに文句言われるくらい
同僚やlinterに文句言われるくらい
946デフォルトの名無しさん
2021/10/16(土) 23:39:42.65ID:1zNIFcv9947デフォルトの名無しさん
2021/10/17(日) 07:56:05.72ID:mIAwyFSs esc幾つも入れるより、\Q\Eの方がスマートな気がしてるんだけどあんまり使われないのは何で?
948デフォルトの名無しさん
2021/10/17(日) 08:28:28.33ID:N+Nl+RmC Perl以外じゃ使えないから
まぁ、他でもメタ文字をそのまま使えるオプションが有るのがほとんどだけどね
まぁ、他でもメタ文字をそのまま使えるオプションが有るのがほとんどだけどね
949デフォルトの名無しさん
2021/10/17(日) 10:24:56.81ID:mIAwyFSs そうなのか、ありがとう
950デフォルトの名無しさん
2021/10/17(日) 18:01:06.39ID:p8oc8mfi Pythonお使いの方、正規表現は、reとregexのどっち使っていますか?
regexがアトミックグループをサポートしている、などという話は知識として知ってはいるのですが、
reが残っているということはreにも実用上の優位点があるということですよね。それは何なのでしょうか
regexがアトミックグループをサポートしている、などという話は知識として知ってはいるのですが、
reが残っているということはreにも実用上の優位点があるということですよね。それは何なのでしょうか
951デフォルトの名無しさん
2021/10/17(日) 21:30:56.51ID:E1qJZsEj ないよ。regex使えるなら使うべき
952デフォルトの名無しさん
2021/10/17(日) 23:24:37.14ID:rEReGylo コアに入れてしまった以上、気楽になくせないだけじゃないの
953デフォルトの名無しさん
2021/10/18(月) 00:56:20.45ID:fcbr/1wh 昔reで書いたコードを書き直さずに使えるのが最大のメリットだと思うけど
954デフォルトの名無しさん
2021/10/18(月) 01:10:10.73ID:IgDyba7Y 「後方互換を破壊するに足る理由」が無いので、そのまま残されている
955デフォルトの名無しさん
2021/10/18(月) 07:31:05.25ID:XtnzC8HY956デフォルトの名無しさん
2021/10/18(月) 08:28:55.87ID:CI2UP6iO エスケープは恥だが役に立つ
957デフォルトの名無しさん
2021/10/18(月) 08:46:32.68ID:PPwA/bGd python2からpython3への後方互換の捨てっぷりを思えば、
さっさとreを捨ててregexが標準になってもおかしくないはずだが、そうなっていないのはなにか事情があるのかな?
さっさとreを捨ててregexが標準になってもおかしくないはずだが、そうなっていないのはなにか事情があるのかな?
958デフォルトの名無しさん
2021/10/18(月) 08:55:29.74ID:K+CpcSgx reで不便したことないけどregexにしかない有用機能ってなにがあるの?
959デフォルトの名無しさん
2021/10/18(月) 14:36:27.24ID:TKHV76Qy 日本語などの処理とか
960デフォルトの名無しさん
2021/10/19(火) 11:49:02.44ID:q6QnFAh4 pythonistaでregexインストールしようとしたら、c言語使ってるんで無理だよ的メッセージが出ました。
そうなると、re使うしかないわけで、そういう意味では存在価値ありますね。
そうなると、re使うしかないわけで、そういう意味では存在価値ありますね。
961デフォルトの名無しさん
2021/10/19(火) 13:36:44.32ID:WfNe98xT reがregexを取り込めばいいってだけなのでは?
少なくともreが対応してる範囲でregexも同様に使えるということだし
あまり大きいと組み込み用途とかでは難しいのかもしれないけど
urllibはそんな感じで後発を取り込んでるよね
少なくともreが対応してる範囲でregexも同様に使えるということだし
あまり大きいと組み込み用途とかでは難しいのかもしれないけど
urllibはそんな感じで後発を取り込んでるよね
962デフォルトの名無しさん
2021/10/19(火) 14:38:55.63ID:4nkSMT7f 取込みして欲しい
963デフォルトの名無しさん
2021/10/23(土) 08:19:13.63ID:eRVGYV8c AHKで、文字列中の単語の間にスラッシュがある場合はその単語の後ろ(区切り文字やピリオドの前)に閉じ括弧を付けたいのだけど、例えばRegExReplaceを使って実現する方法を誰か教えていただけないでしょうか。
こんな、感じにしたいと思ってます。
変換前: aaa bbb/ccc ddd
変換後: aaa bbb/ccc) ddd
こんな、感じにしたいと思ってます。
変換前: aaa bbb/ccc ddd
変換後: aaa bbb/ccc) ddd
964デフォルトの名無しさん
2021/10/23(土) 11:35:17.68ID:0zN24xO8 (\w+\/\w+)
$1)
文字列に日本語が入るなら\wを適切なやつに変えて
$1)
文字列に日本語が入るなら\wを適切なやつに変えて
965デフォルトの名無しさん
2021/10/23(土) 15:13:21.57ID:eRVGYV8c >>964
グループ化って、こうやって使うんでうね。すごく勉強になりましたし、非常に助かりました。ありがとうございます。
グループ化って、こうやって使うんでうね。すごく勉強になりましたし、非常に助かりました。ありがとうございます。
966デフォルトの名無しさん
2021/10/27(水) 20:23:03.98ID:TntzyF5u ●Regular Expressionの使用環境
javascript
●検索か置換か?
検索
●説明
abcとdefというキーワードが最大1回順不同で出現するのに一致したい
●対象データ
abc def→一致
def abc→一致
abc→一致
def→一致
→空白のみでも一致
→何もなくても一致
abc def g→異なる単語が入っていると不一致
簡単な書き方はありますか?
javascript
●検索か置換か?
検索
●説明
abcとdefというキーワードが最大1回順不同で出現するのに一致したい
●対象データ
abc def→一致
def abc→一致
abc→一致
def→一致
→空白のみでも一致
→何もなくても一致
abc def g→異なる単語が入っていると不一致
簡単な書き方はありますか?
967デフォルトの名無しさん
2021/10/27(水) 20:44:43.49ID:dNMmh9m9 >>966
var str = 'なんか';
str.replace(/abc|def/g, '');
if (str.trim() === '') console.log('一致');
else console.log('不一致');
var str = 'なんか';
str.replace(/abc|def/g, '');
if (str.trim() === '') console.log('一致');
else console.log('不一致');
968デフォルトの名無しさん
2021/10/27(水) 21:13:34.52ID:dNMmh9m9 str = str.replace(/abc|def/g, '');
だった
だった
969デフォルトの名無しさん
2021/10/27(水) 21:45:36.38ID:TntzyF5u ありがとうございます。
ちなみに正規表現だけで上記は可能ですか?
ちなみに正規表現だけで上記は可能ですか?
970デフォルトの名無しさん
2021/10/27(水) 22:06:08.57ID:BM1dPtJu javascript使うんだろ
何で他の式を使ったらダメなの?
まあorに空白を入れとけばtrimは不要かもね
あと最大1回とは2回出るとダメってことなのか?
abcabc→不一致?
何で他の式を使ったらダメなの?
まあorに空白を入れとけばtrimは不要かもね
あと最大1回とは2回出るとダメってことなのか?
abcabc→不一致?
971デフォルトの名無しさん
2021/10/27(水) 22:38:09.67ID:FvdEROp3972デフォルトの名無しさん
2021/10/27(水) 22:44:32.89ID:TntzyF5u abcabcはabcが2回でるので不一致です。
javascriptの場合教えてもらったコードで問題ないですね。
正規表現だけで表現できると便利だなーとおもったまでです。
>>971 ありだと思います。
javascriptの場合教えてもらったコードで問題ないですね。
正規表現だけで表現できると便利だなーとおもったまでです。
>>971 ありだと思います。
973デフォルトの名無しさん
2021/10/27(水) 23:05:28.48ID:h1zi3AMh 967はabcabcに一致するんじゃないかなあ
^(?: |(abc|def)(?!.*\1))*$
^(?: |(abc|def)(?!.*\1))*$
974デフォルトの名無しさん
2021/10/28(木) 09:10:36.00ID:Fr3tDLQH >>973
こんな書き方できたんだ。知らんかった。
こんな書き方できたんだ。知らんかった。
975デフォルトの名無しさん
2021/10/29(金) 00:41:45.01ID:p2ooNE+J こんなスレがあったんですね
今後お世話になろうと思います^^
今後お世話になろうと思います^^
976デフォルトの名無しさん
2021/10/30(土) 19:56:09.69ID:y9dUwbDd Pythonの正規表現を変数などに入れておき、他の正規表現の一部として再利用する方法ってあるのでしょうか。
第一の正規表現を
hoge =[abcd]
としてhogeに格納しておいて、
別の正規表現で
(【hoge】|[efg])
のように、【】の部分で変数を引用するイメージです。
第一の正規表現を
hoge =[abcd]
としてhogeに格納しておいて、
別の正規表現で
(【hoge】|[efg])
のように、【】の部分で変数を引用するイメージです。
977デフォルトの名無しさん
2021/10/30(土) 20:12:23.79ID:FdnrrKGs978デフォルトの名無しさん
2021/10/30(土) 20:13:14.90ID:y9dUwbDd >>966
試しに考えてみました。
問題あればご指摘ください。
abc defのときに、間の空白がどの程度許容されるのかがわかりませんが、とりあえず1文字の空白があってもなくても良い\s?、ということで考えます。
場合分けすると、
abcが冒頭に来るもの(defはあってもなくても可)
defが冒頭にくるもの(abcはあってもなくても可)
どちらもなく、空白はあってもなくても可
の3種類にわけられますから、
^abc\s?(def)?
^def\s?(abc)?
^\s?
であり、このどれかがあてはまればいいので、
(^abc\s?(def)?| ^def\s?(abc)?|^\s?)
となります。
^は3つに共通しているので、カッコの外に括り出してもいいですね。すると
^ (abc\s?(def)?| def\s?(abc)?|\s?)
となります。
試しに考えてみました。
問題あればご指摘ください。
abc defのときに、間の空白がどの程度許容されるのかがわかりませんが、とりあえず1文字の空白があってもなくても良い\s?、ということで考えます。
場合分けすると、
abcが冒頭に来るもの(defはあってもなくても可)
defが冒頭にくるもの(abcはあってもなくても可)
どちらもなく、空白はあってもなくても可
の3種類にわけられますから、
^abc\s?(def)?
^def\s?(abc)?
^\s?
であり、このどれかがあてはまればいいので、
(^abc\s?(def)?| ^def\s?(abc)?|^\s?)
となります。
^は3つに共通しているので、カッコの外に括り出してもいいですね。すると
^ (abc\s?(def)?| def\s?(abc)?|\s?)
となります。
979デフォルトの名無しさん
2021/10/30(土) 20:19:09.28ID:y9dUwbDd 3つを合成する時に間に変なスペースが入ってしまっていて、マッチを妨げていました。
^(abc\s?(def)?|def\s?(abc)?|\s?)
ですね。
^(abc\s?(def)?|def\s?(abc)?|\s?)
ですね。
980デフォルトの名無しさん
2021/10/30(土) 20:27:08.27ID:y9dUwbDd981デフォルトの名無しさん
2021/10/30(土) 22:28:52.36ID:lg5lGqAB982デフォルトの名無しさん
2021/10/30(土) 23:11:57.73ID:y9dUwbDd >>981
そうであれば
^(abc\s+(def)?|def\s+(abc)?|\s?)\s?$
で良いと思います。
間の空白を1以上とし、
忘れていた行末$を補い、
パターンの後に空白があっても大丈夫なようにしました。
そうであれば
^(abc\s+(def)?|def\s+(abc)?|\s?)\s?$
で良いと思います。
間の空白を1以上とし、
忘れていた行末$を補い、
パターンの後に空白があっても大丈夫なようにしました。
983デフォルトの名無しさん
2021/10/30(土) 23:35:05.65ID:4m+F11LP >>982
それ ' ABC DEF' みたいに先頭に空白があるケースにマッチしなくね?
それ ' ABC DEF' みたいに先頭に空白があるケースにマッチしなくね?
984デフォルトの名無しさん
2021/10/30(土) 23:56:32.32ID:OkX3vbx3 >>982
それ 'ABC' みたいに末尾に空白がないケースにマッチしなくね?
それ 'ABC' みたいに末尾に空白がないケースにマッチしなくね?
985デフォルトの名無しさん
2021/10/31(日) 00:22:50.48ID:Os0N65jy >>984
ご指摘ありがとうございます。
大変勉強になりました
^\\s?(abc(\s+def)?|def(\s+abc)?|\s?)\s?$
のように直しました。
abc のあとにdefが来るとき、
defのあとにabcが来るとき、
これらの場合のみ空白が必須なので、
空白と後に続くものを、まとめて括弧に入れるべきでした。
ご指摘ありがとうございます。
大変勉強になりました
^\\s?(abc(\s+def)?|def(\s+abc)?|\s?)\s?$
のように直しました。
abc のあとにdefが来るとき、
defのあとにabcが来るとき、
これらの場合のみ空白が必須なので、
空白と後に続くものを、まとめて括弧に入れるべきでした。
986デフォルトの名無しさん
2021/10/31(日) 00:32:18.65ID:Os0N65jy ^\s?(abc(\s+def)?|def(\s+abc)?|\s?)\s?$
冒頭のドルマークが1つ多かったです。
すいません。
あとは、冒頭に\s?を置くのであれば、選択肢の3つ目は不要ですね。
仮に空白文字しかない場合、冒頭の\s?が行末までマッチしてしまいますから、選択肢3つ目で空白がマッチすることはない。
というわけで、3つ目の選択肢を消した別解を考えました。
^\s?(abc(\s+def)?|def(\s+abc)?)?\s?$
冒頭のドルマークが1つ多かったです。
すいません。
あとは、冒頭に\s?を置くのであれば、選択肢の3つ目は不要ですね。
仮に空白文字しかない場合、冒頭の\s?が行末までマッチしてしまいますから、選択肢3つ目で空白がマッチすることはない。
というわけで、3つ目の選択肢を消した別解を考えました。
^\s?(abc(\s+def)?|def(\s+abc)?)?\s?$
987デフォルトの名無しさん
2021/10/31(日) 00:49:08.05ID:Os0N65jy 何度もすいません。
行頭と行末は、*を使うつもりが、?を使ってたから変なコメントになってました。
^\s*(abc(\s+def)?|def(\s+abc)?)?\s*$
これで決定校です!
行頭と行末は、*を使うつもりが、?を使ってたから変なコメントになってました。
^\s*(abc(\s+def)?|def(\s+abc)?)?\s*$
これで決定校です!
988デフォルトの名無しさん
2021/11/03(水) 09:32:14.31ID:u//4ywbB 「正規表現一覧表がパクられた」――DeNAのRPAサービスで個人ブログからの無断転載が発覚 取り下げに
https://www.itmedia.co.jp/news/articles/2111/02/news174.html
https://www.itmedia.co.jp/news/articles/2111/02/news174.html
989デフォルトの名無しさん
2021/11/03(水) 10:19:24.89ID:3o+9eeb8 それ見たけど大昔から結構どこにでもある様な表だよね
自意識過剰じゃね?
自意識過剰じゃね?
990デフォルトの名無しさん
2021/11/03(水) 11:54:53.38ID:K+2zXBgv991デフォルトの名無しさん
2021/11/03(水) 13:01:45.68ID:6fv+OhcH 客観的に観てもコピられた可能性は高いと思うが
裁判で勝てるかどうかは微妙
裁判で勝てるかどうかは微妙
992デフォルトの名無しさん
2021/11/03(水) 13:24:24.94ID:U7i9huA/ そんなことより改変もまともにできないのはヤバい
正規表現の例 マッチする例
Coo+el Coopel
https://pbs.twimg.com/media/FC7n-5zaUAETKej.jpg
正規表現の例 マッチする例
Coo+el Coopel
https://pbs.twimg.com/media/FC7n-5zaUAETKej.jpg
993デフォルトの名無しさん
2021/11/03(水) 14:52:06.73ID:2qQw+lMw パクられ元にパクられだ疑惑(はてブ情報)
http://web.archive.org/web/20210302113534/https://troutlurefishing.jp/regex.htm
パクられ元
http://web.archive.org/web/20210118220247/https://murashun.jp/article/programming/regular-expression.html
パクリ元
http://web.archive.org/web/20211030075247/https://coopel.ai/help-center/191
http://web.archive.org/web/20210302113534/https://troutlurefishing.jp/regex.htm
パクられ元
http://web.archive.org/web/20210118220247/https://murashun.jp/article/programming/regular-expression.html
パクリ元
http://web.archive.org/web/20211030075247/https://coopel.ai/help-center/191
994デフォルトの名無しさん
2021/11/03(水) 14:56:33.55ID:V2aH3YMI 態と元・先の使い方がおかしい
パクられ先では?
パクられ先では?
995デフォルトの名無しさん
2021/11/03(水) 16:19:18.89ID:epFspok0 そもそもgooooooogleにしておかないでgo...gleにしてる時点で
元パクリサイト(今回の騒動の主)のパクリ確定だな
元パクリサイト(今回の騒動の主)のパクリ確定だな
996デフォルトの名無しさん
2021/11/03(水) 16:22:38.72ID:epFspok0 ん? 上の2つどっちが先なんだ?
997デフォルトの名無しさん
2021/11/03(水) 16:31:21.33ID:epFspok0 アーカイブされた時間は真ん中が先だな
先後がよくわからんので、>>995の結論については取り消しておく
正規表現を使わない場合、同じ文字の繰り返しって、...以外ではどう表現する?
gogle, google, gooogle ... という例ならある程度わかるんだが
先後がよくわからんので、>>995の結論については取り消しておく
正規表現を使わない場合、同じ文字の繰り返しって、...以外ではどう表現する?
gogle, google, gooogle ... という例ならある程度わかるんだが
998デフォルトの名無しさん
2021/11/03(水) 16:55:49.57ID:X6BWa2vR >>997
アーカイヴではそうなる
はてブ論調では後述のように解されてるけど、根拠不明
https://b.hatena.ne.jp/entry/s/www.itmedia.co.jp/news/articles/2111/02/news174.html
> オリジナルも別のサイト https://troutlurefishing.jp/regex.htm の改変に見えるけど、仮の図表として入れてたのをそのまま出しちゃったんだろうなぁ。。
https://b.hatena.ne.jp/entry/4710603849468972162/comment/roshi
アーカイヴではそうなる
はてブ論調では後述のように解されてるけど、根拠不明
https://b.hatena.ne.jp/entry/s/www.itmedia.co.jp/news/articles/2111/02/news174.html
> オリジナルも別のサイト https://troutlurefishing.jp/regex.htm の改変に見えるけど、仮の図表として入れてたのをそのまま出しちゃったんだろうなぁ。。
https://b.hatena.ne.jp/entry/4710603849468972162/comment/roshi
999デフォルトの名無しさん
2021/11/03(水) 19:48:21.44ID:ebAE+z9+ ◆関連サイト
正規表現メモ
http://www.kt.rim.or.jp/~kbk/regex/regex.html
Perl正規表現雑技
http://www.din.or.jp/~ohzaki/regex.htm
詳説 正規表現
http://www.oreilly.co.jp/books/9784873113593/
正規表現クックブック
http://www.oreilly.co.jp/books/9784873114507/
正規表現プログラミングFAQ
http://capslockabcjp.kitunebi.com/faq.html
.NET Framework の正規表現 | Microsoft Docs
https://docs.microsoft.com/ja-jp/dotnet/standard/base-types/regular-expressions
正規表現 - JavaScript | MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Regular_Expressions
鬼車
https://github.com/kkos/oniguruma
鬼雲
https://github.com/k-takata/Onigmo
bregonig.dll(鬼雲の正規表現をサクラエディタ等で使用するためのライブラリ)
http://k-takata.o.oo7.jp/mysoft/bregonig.html
Boost.Regex 1.45.0 (日本語訳)
http://alpha.sourceforge.jp/devel/boost.regex_ja_1_45_0.pdf
秀丸: 複数行にまたがる検索について
http://homepage2.nifty.com/jr-kun/hidemaru_qa/4_regulr.html#RETURNS
サクラエディタ: 改行
http://d.hatena.ne.jp/myokoym/20101219/1292779058
※ サクラエディタでは複数行に渡る検索・置換は出来ません。
正規表現メモ
http://www.kt.rim.or.jp/~kbk/regex/regex.html
Perl正規表現雑技
http://www.din.or.jp/~ohzaki/regex.htm
詳説 正規表現
http://www.oreilly.co.jp/books/9784873113593/
正規表現クックブック
http://www.oreilly.co.jp/books/9784873114507/
正規表現プログラミングFAQ
http://capslockabcjp.kitunebi.com/faq.html
.NET Framework の正規表現 | Microsoft Docs
https://docs.microsoft.com/ja-jp/dotnet/standard/base-types/regular-expressions
正規表現 - JavaScript | MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Regular_Expressions
鬼車
https://github.com/kkos/oniguruma
鬼雲
https://github.com/k-takata/Onigmo
bregonig.dll(鬼雲の正規表現をサクラエディタ等で使用するためのライブラリ)
http://k-takata.o.oo7.jp/mysoft/bregonig.html
Boost.Regex 1.45.0 (日本語訳)
http://alpha.sourceforge.jp/devel/boost.regex_ja_1_45_0.pdf
秀丸: 複数行にまたがる検索について
http://homepage2.nifty.com/jr-kun/hidemaru_qa/4_regulr.html#RETURNS
サクラエディタ: 改行
http://d.hatena.ne.jp/myokoym/20101219/1292779058
※ サクラエディタでは複数行に渡る検索・置換は出来ません。
1000デフォルトの名無しさん
2021/11/03(水) 20:02:22.42ID:ebAE+z9+10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 778日 21時間 37分 11秒
新しいスレッドを立ててください。
life time: 778日 21時間 37分 11秒
10021002
Over 1000Thread 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。