Regular Expressionスレです。
質問する場合は必ず実装言語や処理系ソフトウェア名を示してください。
前スレ
Regular Expression(正規表現) Part14
https://mevius.5ch.net/test/read.cgi/tech/1489511075/
次スレは>>980宜しく
天ぷら等>>2以降
探検
Regular Expression(正規表現) Part15
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2019/09/16(月) 22:25:11.87ID:enU8we0d2019/09/16(月) 22:25:47.75ID:enU8we0d
スルーされにくい質問のテンプレと例
●Regular Expressionの使用環境
Java1.5
●検索か置換か?
検索
●説明
各行の1番目のAまでを検索したい
●対象データ
ABCA
BCAA
CABA
●希望する結果
ABCA
^
BCAA
^^^
CABA
^^
※ ^ はアンダーラインだそうな ^^;
●Regular Expressionの使用環境
Java1.5
●検索か置換か?
検索
●説明
各行の1番目のAまでを検索したい
●対象データ
ABCA
BCAA
CABA
●希望する結果
ABCA
^
BCAA
^^^
CABA
^^
※ ^ はアンダーラインだそうな ^^;
2019/09/16(月) 22:45:50.99ID:UVYTIEdn
◆関連サイト
正規表現メモ
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
鬼車
http://www.geocities.jp/kosako3/oniguruma/index_ja.html
鬼雲
https://github.com/k-takata/Onigmo
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
鬼車
http://www.geocities.jp/kosako3/oniguruma/index_ja.html
鬼雲
https://github.com/k-takata/Onigmo
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
※ サクラエディタでは複数行に渡る検索・置換は出来ません。
2019/09/17(火) 01:53:27.68ID:JrU+31ml
正規表現技術入門
https://gihyo.jp/book/2015/978-4-7741-7270-5
↑の著者の一人であり Onigmo の作者でもあるtakata先生のツイ
https://twitter.com/k_takata
https://twitter.com/5chan_nel (5ch newer account)
https://gihyo.jp/book/2015/978-4-7741-7270-5
↑の著者の一人であり Onigmo の作者でもあるtakata先生のツイ
https://twitter.com/k_takata
https://twitter.com/5chan_nel (5ch newer account)
2019/09/17(火) 07:00:40.77ID:Au9Vzrnr
>>1-2
乙
乙
2019/09/21(土) 18:08:57.67ID:oqO8j0PL
●Regular Expressionの使用環境
サクラエディタ bregoning.dll ver 3.06という記載があります
●検索か置換か?
置換
●説明
うしろに数字を付けたい。
あ
というのを
/(^.*)/$1/ で置き換えると
あ
になります(変わらない)。
これを、あ→あ00にするために
/(^.*)/$100/ とはできません。
$1等の直後に、数字を付け足すためにはどのように
表現したらよいか教えてください。
元の行の末尾に付け足すとは限らないので、
$1(実際はもっと多いのですが・・)の直後に数字を付け足す方法をお教えください。
サクラエディタ bregoning.dll ver 3.06という記載があります
●検索か置換か?
置換
●説明
うしろに数字を付けたい。
あ
というのを
/(^.*)/$1/ で置き換えると
あ
になります(変わらない)。
これを、あ→あ00にするために
/(^.*)/$100/ とはできません。
$1等の直後に、数字を付け足すためにはどのように
表現したらよいか教えてください。
元の行の末尾に付け足すとは限らないので、
$1(実際はもっと多いのですが・・)の直後に数字を付け足す方法をお教えください。
2019/09/21(土) 19:27:26.83ID:3YukOVDp
2019/09/21(土) 20:16:26.14ID:oqO8j0PL
9デフォルトの名無しさん
2019/10/03(木) 17:59:43.15ID:WLIOnQPh 正規表現クロスワードパズル。めっちゃおもろいww
https://regexcrossword.com/
https://regexcrossword.com/
2019/10/03(木) 22:01:07.23ID:ArP3YJIm
解き方がわかんねぇ・・・
https://regexcrossword.com/challenges/beginner/puzzles/1
[^SPEAK]+
HE|LL|O+
が交わるマスがなんで、Hになるんだ
https://regexcrossword.com/challenges/beginner/puzzles/1
[^SPEAK]+
HE|LL|O+
が交わるマスがなんで、Hになるんだ
2019/10/03(木) 22:18:27.45ID:gZNTfFgd
クロスワードの基本ルールと同様に各マス1文字だが、通常と異なり各ラインが単語になるとは限らない
縦のラインを横ラインをそれぞれ検索対象のテキストと見做して両方がマッチすればOK
ちなみに1回で1ライン全てにマッチする必要は無くて複数回検索して全マスにマッチする形でも良いみたい
縦のラインを横ラインをそれぞれ検索対象のテキストと見做して両方がマッチすればOK
ちなみに1回で1ライン全てにマッチする必要は無くて複数回検索して全マスにマッチする形でも良いみたい
2019/10/03(木) 22:25:40.75ID:TCa0Rrk0
2019/10/03(木) 22:54:32.85ID:ArP3YJIm
2019/10/04(金) 23:39:05.24ID:FCfJ1C/v
全制覇した。疲れた。本来はもっとのんびり楽しむものだよな。
15デフォルトの名無しさん
2019/10/05(土) 09:26:56.80ID:oVPf95FK すげえ!高難易度のやつ歯が立たないわ
2019/10/05(土) 16:01:21.83ID:8eaxbCO5
2019/10/05(土) 16:35:39.41ID:+ss/CUcr
アカウント持ってないから login はできないけど
自分が解いた結果はまだ見られるな。
クッキーを削除したら見られなくなるんだろうか。
自分が解いた結果はまだ見られるな。
クッキーを削除したら見られなくなるんだろうか。
18デフォルトの名無しさん
2019/10/05(土) 16:44:21.25ID:0WeqN8Y02019/10/05(土) 23:37:56.24ID:rOar3xCR
テキストエディタで試したら全27ラインマッチする状態になってるのに正解にならんなあ
2019/10/06(日) 00:08:45.90ID:IBgflZCa
どうもブラウザのせいだったようで、同じ内容を普段使ってないChromeで試したら正解扱いになった、よかった
作った人は凄いけど、解くのは1個1個できるところから埋め、条件を少しずつ絞りこんで行けば案外見た目ほど難しくはない
正規表現の可変長の書式の影響でクロスワードよりピクロスを解く感覚に似てる気がするのでその辺やってた人はちょっと有利かも
あと記憶力に余程の自身がなければ、ちょっと大きめに印刷して各マスに細かい条件を書きながらやったら大分楽になると思う
作った人は凄いけど、解くのは1個1個できるところから埋め、条件を少しずつ絞りこんで行けば案外見た目ほど難しくはない
正規表現の可変長の書式の影響でクロスワードよりピクロスを解く感覚に似てる気がするのでその辺やってた人はちょっと有利かも
あと記憶力に余程の自身がなければ、ちょっと大きめに印刷して各マスに細かい条件を書きながらやったら大分楽になると思う
2019/10/06(日) 12:02:16.89ID:ONMi4OJn
●Regular Expressionの使用環境
※テキスト(csv)を成型するという目的なので、なんでもいいです。
フリー(ネットからDL可能)なものであれば環境を作ります。
●検索か置換か?
置換
●説明
csvファイルの第4フィールドに説明文的なものが入ってます。
ここに半角カンマが紛れています。これを全角文字(、)に置き換えたい。
第4フィールドにいくつカンマがあるかは不定です。(0の場合もあれば、2個、3個、場合によっては10個、それ以上など)
第4フィールド以外は種類は多いのですが特定の文字が入ります。また第4フィールド以外はカンマは入っていません。
各行のフィールド数は固定です。(実際は20フィールドあるのですが、省略のため5フィールドにしてます)
●対象データ
Field1,Field2,Field3,ここは説明文,Field5
Field1,Field2,Field3,説明文です,Field5
Field1,Field2,Field3,ここは説明文,ですよ,Field5
Field1,Field2,Field3,説明してる,フィールドですよ,Field5
●希望する結果
Field1,Field2,Field3,ここは説明文,Field5
Field1,Field2,Field3,説明文です,Field5
Field1,Field2,Field3,ここは説明文、ですよ,Field5
Field1,Field2,Field3,説明してる、フィールドですよ,Field5
よろしくお願いいたします。
※テキスト(csv)を成型するという目的なので、なんでもいいです。
フリー(ネットからDL可能)なものであれば環境を作ります。
●検索か置換か?
置換
●説明
csvファイルの第4フィールドに説明文的なものが入ってます。
ここに半角カンマが紛れています。これを全角文字(、)に置き換えたい。
第4フィールドにいくつカンマがあるかは不定です。(0の場合もあれば、2個、3個、場合によっては10個、それ以上など)
第4フィールド以外は種類は多いのですが特定の文字が入ります。また第4フィールド以外はカンマは入っていません。
各行のフィールド数は固定です。(実際は20フィールドあるのですが、省略のため5フィールドにしてます)
●対象データ
Field1,Field2,Field3,ここは説明文,Field5
Field1,Field2,Field3,説明文です,Field5
Field1,Field2,Field3,ここは説明文,ですよ,Field5
Field1,Field2,Field3,説明してる,フィールドですよ,Field5
●希望する結果
Field1,Field2,Field3,ここは説明文,Field5
Field1,Field2,Field3,説明文です,Field5
Field1,Field2,Field3,ここは説明文、ですよ,Field5
Field1,Field2,Field3,説明してる、フィールドですよ,Field5
よろしくお願いいたします。
2019/10/06(日) 13:19:25.82ID:MVlRtd/O
3つ目の,以降から,field5までの間をキャプチャで良さそう。
23デフォルトの名無しさん
2019/10/06(日) 21:18:49.15ID:QazjZrDG >>21
perl -ne '($a,$b,$c)=m/^((?:[^,]+,){3})(.*[^,])((?:,[^,\n]+){1})$/; $b=~s/,/、/g; print "$a$b$c\n"' input.csv
先頭の三つはカンマの数を数えて取り出し
^((?:[^,]+,){3})
フィールド数は固定とのことなので末尾側もカンマの数で取り出せる
((?:,[^,\n]+){1})$
その間が置換対象
(.*[^,])
ということで数字(3 と 1)を調整すれば実際のデータにも適用できると思います
perl -ne '($a,$b,$c)=m/^((?:[^,]+,){3})(.*[^,])((?:,[^,\n]+){1})$/; $b=~s/,/、/g; print "$a$b$c\n"' input.csv
先頭の三つはカンマの数を数えて取り出し
^((?:[^,]+,){3})
フィールド数は固定とのことなので末尾側もカンマの数で取り出せる
((?:,[^,\n]+){1})$
その間が置換対象
(.*[^,])
ということで数字(3 と 1)を調整すれば実際のデータにも適用できると思います
24デフォルトの名無しさん
2019/10/06(日) 21:30:20.48ID:QazjZrDG2019/10/07(月) 01:52:14.06ID:iyJYb3kL
質問を読んで直ぐにこれを書けるのなら速いけど
もし自分だったらあれをこうしてこれをこうしてと考えて試してる
間にテキストエディタとエクセルを行ったり来たりしながら
タブの挿入と置換と削除を繰り返した方が速いところが
悩ましいw
もし自分だったらあれをこうしてこれをこうしてと考えて試してる
間にテキストエディタとエクセルを行ったり来たりしながら
タブの挿入と置換と削除を繰り返した方が速いところが
悩ましいw
2019/10/07(月) 03:37:15.45ID:21LgfgEW
Ruby で、下のコードを、script.rb に書いて、
入力ファイル名を、input.csv とすると、
端末で、ruby script.rb input.csv と入力する。
つまり、ruby スクリプトファイル名 入力ファイル名
require 'csv'
# 引数はファイル名
CSV.filter( File.open( ARGV[ 0 ] ) ) do |row| # 1行ずつ処理する
row[ 3 ] = row[ 3 ].tr( ",", "、" ) # 列4
end
入力ファイル名を、input.csv とすると、
端末で、ruby script.rb input.csv と入力する。
つまり、ruby スクリプトファイル名 入力ファイル名
require 'csv'
# 引数はファイル名
CSV.filter( File.open( ARGV[ 0 ] ) ) do |row| # 1行ずつ処理する
row[ 3 ] = row[ 3 ].tr( ",", "、" ) # 列4
end
2726
2019/10/07(月) 04:17:44.92ID:21LgfgEW >>26
修正
tr ではなく、tr! で、直接レシーバー(文字列)を変更できる
>row[ 3 ] = row[ 3 ].tr( ",", "、" ) # 列4
row[ 3 ].tr!( ",", "、" ) # 列4
修正
tr ではなく、tr! で、直接レシーバー(文字列)を変更できる
>row[ 3 ] = row[ 3 ].tr( ",", "、" ) # 列4
row[ 3 ].tr!( ",", "、" ) # 列4
2019/10/07(月) 08:59:18.56ID:fodStNL1
それ splice でできるんじゃね? と思ったのでやってみた。
perl -nF, -e 'splice( @F,3,0,join("、",splice( @F,3,@F-5+1))); print( join(",",@F));'
perl -nF, -e 'splice( @F,3,0,join("、",splice( @F,3,@F-5+1))); print( join(",",@F));'
29あ
2019/10/07(月) 21:08:31.31ID:cbxlkLVD >>26
カンマでカラム分割してるからrow[3]にはカンマが含まれないよ
ARGF.each do |line|
line.match(/((?:.+?,){3})(.+)((?:,.+){1})/) do |match|
puts match[1] + match[2].gsub(",", "、") + match[3]
end
end
こういうのって力技で変換するよりも
CSV生成側でクウォートし直したほうがいいよね
カンマでカラム分割してるからrow[3]にはカンマが含まれないよ
ARGF.each do |line|
line.match(/((?:.+?,){3})(.+)((?:,.+){1})/) do |match|
puts match[1] + match[2].gsub(",", "、") + match[3]
end
end
こういうのって力技で変換するよりも
CSV生成側でクウォートし直したほうがいいよね
2019/10/07(月) 22:07:48.83ID:fodStNL1
手間をかけたくないなら、そんなフィールドは末尾に置くのが良い。
そうしておけば何を書こうと邪魔にならない。
いつかは手作業の限界を感じるかもしれないが、それを遅らせることはできる。
そうしておけば何を書こうと邪魔にならない。
いつかは手作業の限界を感じるかもしれないが、それを遅らせることはできる。
31デフォルトの名無しさん
2019/10/07(月) 23:06:48.69ID:gEYFs1Cq AIDS治療みたいなもんか
3226
2019/10/07(月) 23:29:10.22ID:21LgfgEW2019/10/07(月) 23:56:45.43ID:cbxlkLVD
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国側が首相答弁の撤回要求、日本側拒否 [夜のけいちゃん★]
- 債券・円・株「トリプル安」に…長期金利1.755%まで上昇、円は対ユーロで史上最安値 [蚤の市★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★5 [ぐれ★]
- 映画「鬼滅の刃」の興行収入急減、日本行き航空券大量キャンセル…中国メディア報道 [蚤の市★]
- 【音楽】Perfume・あ~ちゃんの結婚相手「一般男性」は吉田カバンの社長・吉田幸裕氏(41) 高身長で山本耕史似 [Ailuropoda melanoleuca★]
- 「タワマン天国」に飛びつく若者…SNSに転がる「成功体験」に続けるのか 湾岸エリアの業者が語った現実 [蚤の市★]
- フランス「G7に習近平主席を呼びたい」ドイツ「良い考えだ」 高市さん...? [237216734]
- 麻生太郎氏、高市政権と距離を置きはじめる(´・ω・`) [399259198]
- 【悲報】中国営業に熱心な日本人タレントたち、中国のイベントが続々と中止に… まだ予定中のアイドルとか歌手とかたくさんいるけど [452836546]
- 自閉症が「んなっしょい」と連呼するお🏡
- 押井守の映画「天使のたまご」が4Kリマスターされて上映されるみたいなんだけどこれ面白いの? [268718286]
- 【悲報】高市効果で「1ドル=160円」が相場へwwwwwwwwwwwwwwwwwwwwwwwwwwwww 止まらぬ高市円安💥💥 [871926377]
