[過去ログ]
Regular Expression(正規表現) Part14 [無断転載禁止]©2ch.net (1002レス)
Regular Expression(正規表現) Part14 [無断転載禁止]©2ch.net http://mevius.5ch.net/test/read.cgi/tech/1489511075/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
1: デフォルトの名無しさん [] 2017/03/15(水) 02:04:35.47 ID:e01p03UP Regular Expressionスレです。 質問する場合は必ず実装言語や処理系ソフトウェア名を示してください。 前スレ Regular Expression(正規表現) Part13 http://echo.2ch.net/test/read.cgi/tech/1415149975/ 次スレは>>980宜しく 天ぷら等2以降 http://mevius.5ch.net/test/read.cgi/tech/1489511075/1
2: デフォルトの名無しさん [sage] 2017/03/15(水) 02:06:40.55 ID:ko4BTSP2 スルーされにくい質問のテンプレと例 ●Regular Expressionの使用環境 Java1.5 ●検索か置換か? 検索 ●説明 各行の1番目のAまでを検索したい ●対象データ ABCA BCAA CABA ●希望する結果 ABCA ^ BCAA ^^^ CABA ^^ ※ ^ はアンダーラインだそうな ^^; http://mevius.5ch.net/test/read.cgi/tech/1489511075/2
3: デフォルトの名無しさん [sage] 2017/03/15(水) 02:06:57.31 ID: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/ クックブック ←追加 鬼車、鬼雲 ←追加 http://mevius.5ch.net/test/read.cgi/tech/1489511075/3
73: デフォルトの名無しさん [sage] 2017/04/23(日) 07:11:51.07 ID:2K1Rl01+ ^[^+]*$|\+(|0*[0-9]|0*[1-9][0-9]|[1-9][0-9][0-9]|0([1-7][0-9][0-9]|8[0-9][0-9])|0(90[1-9]|9[1-9][0-9])|[1-9][0-9][0-9][0-9]|[0-9][0-9][0-9][0-9][0-9]+)([^0-9]|$) ●入力と結果(✓一致 ❌不一致) ✓ Sat May 24 08:05:44 2014 ✓ Tue Mar 28 06:21:47 2017 + ✓ Tue, 26 Jul 2016 23:55:46 -0 ✓ Wed, 05 Oct 2016 15:24:09 -0900 ✓ Wed, 4 Mar 2015 08:39:08 +09000 ✓ Fri, 30 Oct 2015 07:56:41 +00900 ✓ Wed, 4 Mar 2015 08:39:08 0900 ❌ Wed, 25 Mar 2009 14:18:41 +0900 ❌ Tue, 8 Mar 2016 16:11:55 +0900 (JST) ❌ Sat, 24 Jul 2004 03:48:21 +0900<br> http://mevius.5ch.net/test/read.cgi/tech/1489511075/73
80: デフォルトの名無しさん [sage] 2017/04/30(日) 03:04:48.91 ID:sTLetcQY 慇懃無礼でうぜえ http://mevius.5ch.net/test/read.cgi/tech/1489511075/80
101: デフォルトの名無しさん [sage] 2017/05/05(金) 08:29:26.53 ID:bm+deAdf 「Regular Expression」ってことは RegularじゃないExpressionもあるのかな? http://mevius.5ch.net/test/read.cgi/tech/1489511075/101
111: デフォルトの名無しさん [sage] 2017/05/14(日) 20:19:12.83 ID:IUk17Lsy >>110 すみません、実はJaneStyleなど複数の環境で正規表現を使っていて、一番よく使うサクラエディタを例に出してしまいました。 確かにサクラエディタだと「英大文字と小文字を区別する」ってチェックがありますよね・・・ >>109 ありがとうございます!バッチリいけました。 >< http://mevius.5ch.net/test/read.cgi/tech/1489511075/111
222: デフォルトの名無しさん [sage] 2017/06/25(日) 14:40:18.89 ID:gOEYQ1GV Unicode正規化 http://mevius.5ch.net/test/read.cgi/tech/1489511075/222
249: デフォルトの名無しさん [sage] 2017/07/26(水) 01:05:33.15 ID:3rtPYRQF ^AA\d{2}-\d{4}(\.xlsm$)? $? 行末の後ろに、? か。 この式は、見た瞬間に、おかしいとわかる http://mevius.5ch.net/test/read.cgi/tech/1489511075/249
272: デフォルトの名無しさん [] 2017/08/12(土) 17:55:36.45 ID:cYclCetd ●Regular Expressionの使用環境 Java1.8 ●検索か置換か? 検索 ●説明 下記の部分を抽出したい AV0bc-t3.jpg B32bc4f.jpg ●対象データ(一部) 風景-20170503-AV0bc-t3.jpg b5-two-mountain-B32bc4f.jpg 最初は-を区切りとして抽出できるかと思ったが 抽出対象の文字列にも-が登場することが判明して為万事休す状態です。 どうかご指導お願い致します。 http://mevius.5ch.net/test/read.cgi/tech/1489511075/272
330: デフォルトの名無しさん [sage] 2017/10/20(金) 00:50:10.62 ID:hFePCOoH 過去にAutohotkeyスレで正規表現自体の質問は正規表現スレに行けとあったのでこちらで質問させて下さい(巻き添えアク禁でソフトウェア板に書き込めません)。宜しくお願いします。 ●Regular Expressionの使用環境 wikiより引用 >AutoHotkeyで用意されている正規表現は、Perl 5に搭載されているものと概ね互換のPCRE(Perl Compatible Regular Expressions)である ●検索か置換か? 検索 ●説明 順不同の単語群のすべてを含む文字列の最長を検索し取り出したいです ●対象データ var := "クリスマス任意の文字列お盆任意の文字列正月任意の文字列" pos := RegExMatch(var, "s)^(?=.*?お?盆)(?=.*?クリスマス)(?=.*?正月)", $) MsgBox, pos=%pos% $=%$% s)の意味はシングルラインモード posはマッチした位置 $にはマッチした全体が入ります これですと先頭の"位置"にマッチ(pos=1になります)するのでマッチした全体$は空になってしまいます ●希望する結果 $=クリスマス任意の文字列お盆任意の文字列正月 実際は長文の一部で単語群がもっと多いです どの文字が先頭でどの文字が最後か不明のとき、これらの単語群がすべて含まれる文字列全体を取り出すにはどのように書いたら良いでしょうか (クリスマス|お盆|正月).+(?1) これですと正月という単語が含まれなくてもマッチしてしまいます http://mevius.5ch.net/test/read.cgi/tech/1489511075/330
332: デフォルトの名無しさん [sage] 2017/10/20(金) 02:42:11.40 ID:GaFTw98F >>330 その2を組み合わせればいいじゃん /(?=.*クリスマス)(?=.*お?盆)(?=.*正月)(?:クリスマス|お?盆|正月).*(?:クリスマス|お?盆|正月)/ http://mevius.5ch.net/test/read.cgi/tech/1489511075/332
333: デフォルトの名無しさん [sage] 2017/10/20(金) 19:27:41.06 ID:P/1hvwmS 2ch → 5chになったタイミングでアク禁って全解除されたと思うけど、また規制され始めたのかな? http://mevius.5ch.net/test/read.cgi/tech/1489511075/333
338: デフォルトの名無しさん [sage] 2017/10/20(金) 20:23:53.34 ID:JiGfFRv1 pos := RegExMatch(var, "s).*?((?=.*?お?盆)(?=.*?クリスマス)(?=.*?正月)(?:お?盆|クリスマス|正月).*(?:お?盆|クリスマス|正月))", $) MsgBox, %$1% すみませんこれで1文字目不問で取り出せました 長文失礼しました http://mevius.5ch.net/test/read.cgi/tech/1489511075/338
420: デフォルトの名無しさん [sage] 2018/02/14(水) 13:35:37.03 ID:2LP2x+pK C#なんですが [ああ]おおおおお [いいい]こここここ [うう][ええ]そそそそそ ととととと[たた] ↓ おおおおお こここここ そそそそそ ととととと[たた] にしたいんですが、どうしたらいいでしょうか。 ※先頭じゃない文中の[はは]は残したい http://mevius.5ch.net/test/read.cgi/tech/1489511075/420
421: デフォルトの名無しさん [sage] 2018/02/16(金) 13:56:45.89 ID:uX7uVTrc \[[^\]]*?\](?!$) ところによっては\[[^\]]*?\](?!(?:\n|$)) http://mevius.5ch.net/test/read.cgi/tech/1489511075/421
433: デフォルトの名無しさん [sage] 2018/02/16(金) 17:00:58.65 ID:Q4bZpk0j 正規表現の使いどころってどんなところですかね? 普通レベルのプログラマから見ると可読性低くて保守性も悪い気がする タグの要素を最初にバッと配列に入れやすいとか? http://mevius.5ch.net/test/read.cgi/tech/1489511075/433
557: デフォルトの名無しさん [sage] 2018/08/12(日) 21:30:40.27 ID:mMH07JtW >>556 HTMLは扱いが難しいからパーサ使った方がいい どうしても正規表現だというなら, 1. とりあえず的な修正 https://regex101.com/r/sIUmzD/2 /<[^>]*\bcharset\s*=\s*(?:([^\s"'=><`]+)|'([^']*)'|"([^"]*)")\b/$1$2$3/i 2. もう少し気合の入れた修正 https://regex101.com/r/sIUmzD/1 |<meta (?:\s+[^\s"'>/=]+(?:\s*=\s*(?:[^\s"'=><`]+|'[^']*'|"[^"]*"))?)* (?:\s+charset(?:\s*=\s*(?:([^\s"'=><`]+)|'([^']*)'|"([^"]*)"))?) (?:\s+[^\s"'>/=]+(?:\s*=\s*(?:[^\s"'=><`]+|'[^']*'|"[^"]*"))?)*\s*/?>|$1$2$3|i ぐらいか でもこれ後で読むのしんどいでしょ http://mevius.5ch.net/test/read.cgi/tech/1489511075/557
561: デフォルトの名無しさん [sage] 2018/08/12(日) 23:56:24.69 ID:2UQfVx23 HTML のように、要素に親子関係があるもの・構造化されたものは、正規表現じゃ無理 <1><x></x><y></y></1> 開き・閉じタグで、前から一致させると、 <1></x> が対応してしまう ネストも無限にできるから、対応させるのは無理。 パーサを使うべき http://mevius.5ch.net/test/read.cgi/tech/1489511075/561
583: デフォルトの名無しさん [sage] 2018/08/26(日) 18:08:41.45 ID:sCPJIsfv 自分用に作るならこんな感じかなぁ、動作確認してないので使わないでね | <meta (?=\s) [^<>]* \s charset \s* = \s* (?:["']\s*)? ([^\s"'<>;]+) |x; こういうのは想定外 ※ " " の中に > がある <meta comment="a>b" charset="UTF-8"> http://mevius.5ch.net/test/read.cgi/tech/1489511075/583
601: デフォルトの名無しさん [sage] 2018/09/17(月) 12:06:03.62 ID:SR+usNFF C#、System.Text.RegularExpressions.Regexの正規表現で xxの中を取り出すにはどうしたらいいのでしょう? ただし取り出したいのはトップのxxで、xxが閉じる前にyyがあるときはそのxxは無視という条件付きです 対象文字列 "<xx><xx><yy>111</yy></xx></xx><xx>222</xx><xx>333</xx>"; 試した正規表現 @"<xx>.*?[^(</yy>)]</xx>" 結果 <xx><xx><yy>111</yy></xx></xx><xx>222</xx> <xx>333</xx> 欲しい結果 <xx><xx><yy>111</yy></xx></xx> <xx>222</xx> <xx>333</xx> http://mevius.5ch.net/test/read.cgi/tech/1489511075/601
605: デフォルトの名無しさん [sage] 2018/09/18(火) 00:00:11.49 ID:lHFpavF+ >>601 .NET Frameworkの正規表現は知らんけど、鬼雲でなら (?=<xx>)(<(\w+)>([^<]*|\g<-3>)*</\k<-2-0>>) これは最低限のものでイレギュラーなものには対応しない 文字列でエスケープされてるとかコメントが入ってるとか タグにタグ名以外の余計なものが入ってるとか(</a href=...>とか<br />とか) ペアでないタグがあるとか(<br>のような単独タグ,<xx>と</xx>のどちらかしかないとか) そういうのにも対応させるなら工夫して 一応、.NET Frameworkの正規表現の再帰については https://qiita.com/HMMNRST/items/15800514bbe66f504789 http://mevius.5ch.net/test/read.cgi/tech/1489511075/605
611: デフォルトの名無しさん [sage] 2018/09/18(火) 07:04:18.68 ID:iA/s8q9i ぶっちゃけ欲しい結果が何なのか結局よく分かってない <xx>(?:(?<tag><(?!yy>)(?<tagname>[a-z]+)>)*\d+(?<-tag></\k<tagname>>)*(?(tag)(?!)))*</xx> http://mevius.5ch.net/test/read.cgi/tech/1489511075/611
662: デフォルトの名無しさん [sage] 2018/10/21(日) 19:43:06.22 ID:7AODCPK7 (a|b|c|d)* の展開についての考察 a*(ba*)*{ca*(ba*)*}* の a は全て a* の形になっているのでこれを利用する a を (a|d) に置き換えることで分岐を1つ増やす (a|d)* = a*(da*)* なので a* を a*(da*)* に置き換えるだけで答えが求まる a*(da*)*(ba*(da*)*)*(ca*(da*)*(ba*(da*)*)*)* (a|b|c|d|f)* を求めたいときは同じように a* を置き換えるだけで求まる このように a* は分岐を無限に増やす入り口のような役割をする http://mevius.5ch.net/test/read.cgi/tech/1489511075/662
729: デフォルトの名無しさん [sage] 2018/11/21(水) 23:39:43.26 ID:UsYfXb0d >>728 Regex.Replace(str, @"(?<=^\s*)\s", "空"); http://mevius.5ch.net/test/read.cgi/tech/1489511075/729
801: デフォルトの名無しさん [] 2019/04/22(月) 20:21:53.32 ID:GQt1LKrG sed 置換 1に挟まれたN個以下の0または-で構成された文字列を、同数の1で置き換える 10001→11111 100-1→11111 1---1→11111 10-0-0001→111111111 置換対象と同数の文字列で置換するというところをどう正規表現で表すかわからず、、、 よろしくお願いします http://mevius.5ch.net/test/read.cgi/tech/1489511075/801
804: デフォルトの名無しさん [sage] 2019/04/23(火) 08:49:46.57 ID:ef59e0DS >>801 たぶんこれだけでは不要なところを置換しそう :a;s/1([^0\-]*)(?:[0\-])(.*)1/1$11$21/g;t a 例題をこなすのは確認 http://mevius.5ch.net/test/read.cgi/tech/1489511075/804
805: デフォルトの名無しさん [] 2019/04/23(火) 10:21:33.54 ID:yIB0exXp >>801 100010 とか 1000101 とか があるのか? あった場合はどうすべきか そこは明記しような。 謎だらけの設計書書く奴はIT向いてない。 http://mevius.5ch.net/test/read.cgi/tech/1489511075/805
915: デフォルトの名無しさん [sage] 2019/07/20(土) 17:29:27.69 ID:AFOF1ubv JSです 「はい」「はい」 「うん」「うん」 「■●」「■●」 「△◎」「△◎」 など、同じ文字列2回(あるいは2回以上)の繰り返しを探すにはどうすればよいでしょうか? /「(.+)+」/ とかだと、1回目と2回目が違ってもヒットしちゃいますよね…? http://mevius.5ch.net/test/read.cgi/tech/1489511075/915
994: デフォルトの名無しさん [sage] 2019/10/13(日) 01:09:33.88 ID:Gu1oNPJo Ruby で、 text = <<"EOT" <aaa bbb ccc ddd> <eee> ffff ggg <hhh iiii> EOT # m option は、multi-line。$1 は、キャプチャー部分。 # [^>]+ は、> 以外の文字が、1文字以上続く puts text.gsub( /<([^>]+)>/m ) { |matched| $1.gsub( "\n", " " ) } >>993 >$1.gsub("\n", "") "" は、" "(半角空白)の間違いだろ http://mevius.5ch.net/test/read.cgi/tech/1489511075/994
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.057s