Regular Expression(正規表現) Part14 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2017/03/15(水) 02:04:35.47ID:e01p03UP
Regular Expressionスレです。

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

前スレ
Regular Expression(正規表現) Part13
http://echo.2ch.net/test/read.cgi/tech/1415149975/


次スレは>>980宜しく
天ぷら等2以降
2017/03/15(水) 02:06:40.55ID:ko4BTSP2
スルーされにくい質問のテンプレと例

●Regular Expressionの使用環境
Java1.5

●検索か置換か?
検索

●説明
各行の1番目のAまでを検索したい

●対象データ
ABCA
BCAA
CABA

●希望する結果
ABCA
^
BCAA
^^^
CABA
^^

※ ^ はアンダーラインだそうな ^^;
2017/03/15(水) 02:06:57.31ID:ko4BTSP2
◆関連サイト
正規表現メモ
http://www.kt.rim.or.jp/~kbk/regex/regex.html
Perl正規表現雑技
http://www.din.or.jp/~ohzaki/regex.htm
Regular Expression(Riue ちゃんの正規表現講座)
http://www.sixnine.net/regexp/
正規表現パズル
http://www.geocities.jp/oraclesqlpuzzle/regex/
詳説 正規表現
http://www.oreilly.co.jp/books/9784873113593/
正規表現プログラミングFAQ
http://capslockabcjp.kitunebi.com/faq.html
JScript 正規表現の概説
http://msdn.microsoft.com/ja-jp/library/28hw3sce%28v=VS.80%29.aspx
.NET Framework 正規表現言語要素
http://msdn.microsoft.com/ja-jp/library/az24scfc%28v=vs.80%29.aspx
【 初心者 】 正規表現 【 入門 】 ←閉鎖
http://funcchan.blog16.fc2.com/
クックブック ←追加
鬼車、鬼雲 ←追加
2017/03/15(水) 02:07:49.24ID:ko4BTSP2
◆関連スレ
[UNIX板] 正規表現
http://pc12.2ch.net/test/read.cgi/unix/1039165754/
[WebProg] 正規表現道場 Part2 ←板移転
http://kanae.2ch.net/test/read.cgi/php/1348048723/

◆前スレ
[1] http://pc8.2ch.net/test/read.cgi/tech/1062152374/
[2] http://pc8.2ch.net/test/read.cgi/tech/1131028296/
[3] http://pc11.2ch.net/test/read.cgi/tech/1156413899/
[4] http://pc11.2ch.net/test/read.cgi/tech/1186030400/
[5] http://pc12.2ch.net/test/read.cgi/tech/1212498448/
[6] http://pc12.2ch.net/test/read.cgi/tech/1241537764/
[7] http://hibari.2ch.net/test/read.cgi/tech/1268979408/
[8] http://hibari.2ch.net/test/read.cgi/tech/1301067486/
[9] http://toro.2ch.net/test/read.cgi/tech/1323566370/
[10] http://toro.2ch.net/test/read.cgi/tech/1340383120/
[11] http://toro.2ch.net/test/read.cgi/tech/1362913813/
[12] http://peace.2ch.net/test/read.cgi/tech/1387257592/
[13] http://peace.2ch.net/test/read.cgi/tech/1415149975/
2017/03/15(水) 02:08:13.70ID:ko4BTSP2
鬼車
http://www.geocities.jp/kosako3/oniguruma/index_ja.html
鬼雲
https://github.com/k-takata/Onigmo

Boost.Regex(日本語訳)
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.oreilly.co.jp/books/9784873114507/

せいきなんとか
http://akiba.geocities.jp/hp20140401/
2017/03/15(水) 02:08:24.61ID:5ViZ5KQR
387:名無し募集中。。。:2017/03/15(水) 02:01:25
以下依頼します。
よろしくお願いします(宣言してスレ立て規制に引っかかった)

【板名】 プログラム技術
【板URL】 http://echo.2ch.net/tech/
【タイトル】 Regular Expression(正規表現) Part14
【名前(省略可)】
【メール欄(省略可)】
【本文】
Regular Expressionスレです。

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

前スレ
Regular Expression(正規表現) Part13
http://echo.2ch.net/test/read.cgi/tech/1415149975/


次スレは>>980宜しく
天ぷら等2以降
2017/03/15(水) 02:09:35.98ID:ko4BTSP2
[ ある "文字列" を含まない正規表現 ]

▽ 先読みが使える環境

((?!xyz).)* または (?:(?!xyz).)*
後者はカッコによるキャプチャを無効化しています。
1文字以上の繰り返しにしたい場合は * を + に書き換えて下さい。


▽ 先読みが使えない環境

オートマトンの知識が不可欠なため初心者にはまず無理です。
解説サイトですらほとんどがデタラメな作成方法を載せています。
↓正しい作り方はこちら。

xy を含まないものにマッチする正規表現 - Perl正規表現雑技
http://www.din.or.jp/~ohzaki/regex.htm#WithoutXY

xyz を含まないものにマッチする正規表現 - Perl正規表現雑技
http://www.din.or.jp/~ohzaki/regex.htm#WithoutXYZ

↓いろいろな文字列否定

タグの中に "ある文字列" を含まない正規表現
http://akiba.geocities.jp/hp20140401/2014/002.html
8デフォルトの名無しさん
垢版 |
2017/03/15(水) 08:53:37.66ID:ZusWJMmJ
>>1
2017/03/15(水) 11:35:18.29ID:7YWEdixI
どうでもいいけど deny は高校で習ったわ
2017/03/15(水) 15:17:17.33ID:ARIh7/3F
習う習わないっていう材料はテキストに出てくるかどうかなのか?
(と言っても俺の時代学校によって採用するテキストの種類だって何種類もあったんだけど)
それともどっかの参考書も含むのか?
11デフォルトの名無しさん
垢版 |
2017/03/15(水) 15:21:02.26ID:JuWg/t11
私は中学校で習いましたよ
2017/03/15(水) 16:23:05.39ID:FiGu7lnE
Regexの発音
https://www.youtube.com/watch?v=PGZldvNL2rw
http://english.stackexchange.com/questions/94371/
https://www.quora.com/What-is-the-correct-way-to-pronounce-regex

英語圏でもhard g派とsoft g派が半々
俺は語呂がいいからsoft g派 カタカナにするとレジェックス
英語で発音するときはリージェックスのほうが近いけどね

gifをギフって読む人がいるのと同じ
2017/03/15(水) 18:00:46.15ID:LExN6Gy2
ギットをジットと呼ぶ人もいるの?
2017/03/15(水) 19:10:20.88ID:FiGu7lnE
それは略語じゃなくて元から英単語だからね
リーナスがジットって発音してたらそれが広まっただろうけど
2017/03/15(水) 23:15:08.29ID:GyMxol53
海外の動画見たら「SQL Server」を「シークルサーバー」って発音しててちょっと驚いた
2017/03/16(木) 01:57:00.56ID:y9TWt00W
>>15
そういえば昔、初めてRDBを学んだ頃
会社の先輩でSQLを「シークェル」て呼ぶ人いたわ
その人一人だけだったけど
2017/03/16(木) 23:04:01.82ID:SS9/9E5d
FAQ!
2017/03/21(火) 02:29:10.44ID:5LrJtuWs
>>16
Fileをローマ字読みでフィレと読んでいる
MakeFileはマケフィレ
2017/03/23(木) 06:22:49.19ID:m0GWFz0v
http://patorjk.com/blog/2012/01/26/pronouncing-sql-s-q-l-or-sequel/
2017/03/24(金) 06:37:22.44ID:J6kPEUuW
SQLの話まで行くともはやスレタイ関係ないじゃん、と思ったが>>19は面白かったわ
俺はsoft g、S-Q-Lで読んでるが、相手が先に違う読み方してたらそれに合わせてる
21デフォルトの名無しさん
垢版 |
2017/03/29(水) 23:42:35.49ID:CyM0OTMA
質問

詳説 正規表現 第2版 持ってるんだけど、 詳説 正規表現 第3版 との違いって何かある?
第3版の方は5000円もするから大差ないなら買わないでおきたい
2017/03/30(木) 00:21:57.35ID:LEwdK5Fw
This third edition features enhanced PHP coverage in the early chapters,
plus an all new, expansive chapter devoted entirely to PHP regular expressions and how to wield them effectively.
Also new in this edition, the Java chapter has been rewritten and expanded considerably to reflect new features of Java 1.5 and Java 1.6.

って書いてるね
上に書いてる内容は目次の違い見ても分かるよ
2017/03/30(木) 00:39:32.58ID:Z/GqZVkW
買おうと思ったけど、後ろ半分が自分に関係なくて買うのやめた。
2017/03/30(木) 01:42:52.91ID:1DorAGfX
失礼します。質問させていただきます。
複数行からなるデータを、指定したピッチ(行)おきに消したいのですが、やり方を教えて下さい!
例えば
中1行空けてなら1,3,5,7
中2行空けてなら1,4,7,10
中3行空けてなら1,5,9,13
の行を削除していくみたいな感じです。
出だしは1行目からでなくても、これは行の調整でなんとか出来そうです。
できるだけ手順が少ないのが理想です。やり方解る方マジ教えてほしいです!
手作業でやってて疲れてしました。まだいっぱいあります・・・お願いします。
2017/03/30(木) 02:07:11.97ID:J79lEXio
それエディタのマクロでやること
2017/03/30(木) 02:20:39.52ID:7+t5IDTq
>>24
gawk
2017/03/30(木) 03:34:41.36ID:Z/GqZVkW
何かスクリプトが使えるなら簡単だけど
正規表現だけでは難しそう
いらない行だけに含まれている
決まった文字、記号があるとか、またはその逆みたいな
いらない行を判断出来る要素があれば正規表現の検索置換で可能
2017/03/30(木) 04:00:51.53ID:Z/GqZVkW
あそっか、上から3行づつとかで切っていけばいけるのか
明日試してみよっと。
2017/03/30(木) 04:11:47.74ID:LEwdK5Fw
中1行ずつに削除なら(.*)¥n.* を ¥1に置換
中2行ずるに削除なら(.*)¥n.*¥n.* を ¥1に置換
みたいな方法でできるけど
特別な理由が無い限りエディタのマクロ使うかスクリプト使うね
2017/03/30(木) 04:16:57.88ID:UdsMclqE
正規表現でって言うけど何使うのかな?
Perl?
3124
垢版 |
2017/03/30(木) 06:57:32.87ID:1DorAGfX
レスを頂い方々どうもありがとうございます。エディタのマクロでやる方がいいのですか!
これはいいことを知りました!マクロ使ったことないですがこの次に勉強してみようと思います。
>>29さん
教えて頂いた正規表現で出来ました!これでマジ助かります\(^o^)/
どうもありがとうございました。\(^o^)/
2017/04/01(土) 03:40:09.20ID:4EJbPXqm
(?i)((\S+ ){5}|^(\S+ ){0,5}?)(\bAAA\b)(( \S+){5}|( \S+){0,5}?$)

英文からある単語AAAを検索して前後5文字づつ一緒に取得
ただし途中に改行がある場合は改行前まで

上の表現で目的は達成したのですが
疑問が湧いたので質問です
A|Bのような単純またはではなくて
ifのような条件で切り替えるような正規表現はありますか?
(各種のスクリプト言語に依存しないやり方で)
合わせて、上の表現よりもこうした方が良いとかあったら
よろしくお願いします。
2017/04/01(土) 03:45:05.14ID:FRLTAWk8
http://www.regular-expressions.info/conditional.html
http://www.rexegg.com/regex-conditionals.html
2017/04/01(土) 10:44:34.81ID:4EJbPXqm
>>33
ありがとうございます!
2017/04/02(日) 20:30:31.43ID:g6KuPxH9
ファイル名の置換(linuxのrenameコマンド)で
rename パール正規表現 対象ファイルで置換が出来るみたいです。

test_20140402_1810.m4aをtest_20140402.m4aに"_1800"を削除したいのですが、
rename 's/_d{4}\.m4a$/\.m4a/' test_20170402_1810.m4a
としてもうまく行かずにエラーも出ずにファイル名も変わりません。

"_"+"数字4桁"+".m4a"にマッチするようにして".m4a"に置換すればいいかと思ったのに出来ていない。
何処が間違ってますか?
2017/04/02(日) 20:41:25.41ID:TvISwdcG
>>35
dのところのエスケープ
あと置換文字列はピリオドにエスケープいらない
マッチしないだけだからエラーがでなくてもおかしくない
2017/04/02(日) 22:31:46.58ID:g6KuPxH9
ありがと。うまく行ったよ。
2017/04/12(水) 19:00:37.87ID:QHemYrmG
正規表現で任意文字以外を消すにはどうしたらいいですか?
検索でヒットしたものだけ残したいということです。
よろしくおねがいします。
2017/04/12(水) 20:59:49.88ID:u8woYKAJ
>>38
漠然とした質問だから漠然としか答えられないけど
キーワードを含む文全体(先頭から末尾まで)をマッチさせて
それをキーワードに置換させればいい
2017/04/12(水) 21:00:35.18ID:ud+oociV
[^(abc)]
これでabc以外の文字が全部選択できる
でもこれってどういう時に使うんだろう?
結局残るのがabcだけなら
わざわざ検索しなくてもよさそうだけど
2017/04/12(水) 21:12:14.06ID:u8woYKAJ
>>40
なんか勘違いしてそうな記述なんだけど?
それは、(,a,b,c,)の5文字以外の1文字を表してる
文字列abc以外を表すのなら
(?:(?!abc).)
2017/04/12(水) 21:52:20.74ID:ixmoPw8q
Ruby 2.4.1で使えるようになった非包含オペレータ便利
http://qiita.com/k-takata/items/4e45121081c83d3d5bfd
4338
垢版 |
2017/04/12(水) 22:16:13.87ID:QHemYrmG
>>39>>40
レスをありがとうございます。
やろうとしてたのは下記例のような場合で、-で直接挟まれた文字のみ残したいというものです。

消-残-残--消 -残--消 -残-
消--残--消 -消 -残-
44デフォルトの名無しさん
垢版 |
2017/04/13(木) 05:45:19.12ID:Bx+Z85rt
- と - の間の文字列で空白文字が入っちゃいかんということならこんな感じ?

perl -ne 'print( /(?<=-)([^-\s]+)(?=-)/g ,"\n")'

こういうことじゃないならもう少し説明を。
4543
垢版 |
2017/04/14(金) 03:41:56.00ID:8AuQ8qy9
>>44
レスをいただきありがとうございます。教えて頂いた記述はPerlということであってますよね?
Perlを導入して使ってみてからレスをお返ししようといろいろ調べていたら、大変遅れてしまい礼を欠いてしました。
いろんなサイトを見過ぎたせいか、結局導入方法が絞れないというか、よくわからなくり、
時間だけが過ぎましたので不甲斐なく申し訳ないですが兎に角お礼まで。どうもありがとうございました。
2017/04/14(金) 08:15:43.14ID:mEmX7gnv
ブラウザから実行すれば、簡単

paiza.IO, codepad なら、ログインもいらない
2017/04/14(金) 09:03:58.80ID:uldWbSLb
>>45
とりあえず>>1-2を嫁
2017/04/14(金) 11:21:59.85ID:7lZUeeAF
置換でやるとすると、これでどうかな?
これなら適当なエディタやWSH(JScript)ででも実行できる
(先頭の.*?を[\s\S]*?に変えれば、改行コードは末尾のみになる)
ただ、もしかすると考慮抜けの場合があるかも

正規表現:/.*?-([^\s-]+)(?=-)|-*[^-]*?(\r)?$/mg
置換文字:$1$2
2017/04/15(土) 02:46:51.37ID:8aYCgh5m
レスをくださった方々、また遅くなりましたがありがとうございます。
>>46
こんな便利なものがあるんですね!教えていただきありがとうございます。またゆっくり触ってみたいとおもいます。
>>47
質問方法の不備を自覚しました。以後気を付けます。申し訳ありません。
>>48
サクラエディタで希望どうりの置換えが出来ました。本当にありがとうございます。
たて続けになり申し訳ないのですが。できればもう一つお聞きしたいです。
下記のような英文やその他も、単語と単語の間に入る半角スペースを許容することは可能でしょうか?
-Good Morning-
-残 残-

-東京都 港区 六本木-
-残 残 残-
2017/04/15(土) 09:28:31.10ID:7fUWShMv
>>49
それは別件なのか?
-a -b-
の場合、その条件なら
a b
が残ることになるけど?
それでいいなら、\sを抜くだけでもいいし、(?=-)も取ってもいい
2017/04/15(土) 10:02:24.26ID:7fUWShMv
ごめん、「間に入る」だったのか
/.*?-((?:[^-\s]| )*[^-\s])(?=-)|-*[^-]*?\r?$/mg
$1
2017/04/15(土) 10:07:27.57ID:7fUWShMv
\rもいらないか
/.*?-((?:[^-\s]| )*[^-\s])(?=-)|-*[^-]*?$/mg
2017/04/15(土) 10:21:57.02ID:7fUWShMv
これじゃまずい
/.*?-((?:[^\s-]| )*[^\s-])(?=-)|.*-(?:[^\s-]| )*[^\s-](?=[^-])|-*[^-]*$/mg
冗長かもしれない
2017/04/15(土) 10:24:14.97ID:7fUWShMv
↑でも問題ないけど
/.*?-((?:[^\s-]| )*[^\s-])(?=-)|.*-(?:[^\s-]| )*[^\s-](?!-)|-*[^-]*$/mg
2017/04/15(土) 11:39:21.99ID:8aYCgh5m
>>50-54
無理を利いてくださりありがとうございます。
実は最初の質問に穴があったので別件という形で再質問させていただきました。失礼しました。
教えて頂いた記述は完璧でした本当に感謝です!
レスも何度もくださってこの度は大変お世話になりました。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況