Regular Expressionスレです。
質問する場合は必ず実装言語や処理系ソフトウェア名を示してください。
前スレ
Regular Expression(正規表現) Part13
http://echo.2ch.net/test/read.cgi/tech/1415149975/
次スレは>>980宜しく
天ぷら等2以降
探検
Regular Expression(正規表現) Part14 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2017/03/15(水) 02:04:35.47ID:e01p03UP341デフォルトの名無しさん
2017/10/20(金) 22:48:55.52ID:yLtxI7rs342デフォルトの名無しさん
2017/10/21(土) 00:17:18.52ID:jXM7J8Fl こういうのはどうかな
(?=.*クリスマス)(?=.*お盆)(?=.*正月)(?:クリスマス|お盆|正月).*(?:クリスマス|お盆|正月)
(?=.*クリスマス)(?=.*お盆)(?=.*正月)(?:クリスマス|お盆|正月).*(?:クリスマス|お盆|正月)
343デフォルトの名無しさん
2017/10/21(土) 00:21:45.84ID:jXM7J8Fl344デフォルトの名無しさん
2017/10/21(土) 00:33:00.59ID:ZBz0JWdz **クリスマス**クリスマス**正月**お盆**お盆**
だったら最初と最後の**を抜かして
クリスマス**クリスマス**正月**お盆**お盆
にマッチさせたいって話なの?
あとシングルラインモード使ってるから
複数行にわたってマッチさせたいんだよね?
↓こういうの
**クリスマス**
**クリスマス**正月**
**正月**お盆**
だったら最初と最後の**を抜かして
クリスマス**クリスマス**正月**お盆**お盆
にマッチさせたいって話なの?
あとシングルラインモード使ってるから
複数行にわたってマッチさせたいんだよね?
↓こういうの
**クリスマス**
**クリスマス**正月**
**正月**お盆**
345デフォルトの名無しさん
2017/10/21(土) 00:33:20.08ID:ZBz0JWdz アスタリスク見にくいな
346338
2017/10/21(土) 02:32:45.68ID:o7hEIA7f >>342,343
AutoHotkey v1.1.26.01(最新) Unicode版ですがやはり先頭が別の文字列だとマッチしません
var := "zzzクリスマス任意の文字列お盆任意の文字列正月任意の文字列お盆任意の文字列正月任意の文字列クリスマスzzzz盆zzzzz盆zzzzzzz盆zzzzzzzzzzzお盆"
pos := RegExMatch(var, "s)(?=.*?お?盆)(?=.*?クリスマス)(?=.*?正月)(?:お?盆|クリスマス|正月).*(?:お?盆|クリスマス|正月)", $)
MsgBox,,, pos%pos% %$%, ;pos=0 マッチしません
>>338の正規表現ならpos=1で最初に見つかるクリスマスから最後の盆まで取り出せました
>>344
その通りです>>340より分かりやすい説明が思いつきません
AutoHotkey v1.1.26.01(最新) Unicode版ですがやはり先頭が別の文字列だとマッチしません
var := "zzzクリスマス任意の文字列お盆任意の文字列正月任意の文字列お盆任意の文字列正月任意の文字列クリスマスzzzz盆zzzzz盆zzzzzzz盆zzzzzzzzzzzお盆"
pos := RegExMatch(var, "s)(?=.*?お?盆)(?=.*?クリスマス)(?=.*?正月)(?:お?盆|クリスマス|正月).*(?:お?盆|クリスマス|正月)", $)
MsgBox,,, pos%pos% %$%, ;pos=0 マッチしません
>>338の正規表現ならpos=1で最初に見つかるクリスマスから最後の盆まで取り出せました
>>344
その通りです>>340より分かりやすい説明が思いつきません
347デフォルトの名無しさん
2017/10/21(土) 12:04:21.32ID:Awu3DWjD "s)(?=((お?+盆)|(クリスマス)|(正月)))(?=.*(?2))(?=.*(?3))(?=.*(?4)).*(?1)"
>>346
気持ち悪いから試してみた
"s)(?=盆)盆"→マッチする
"s)(?=.*?盆)盆"→マッチしない←?!?!
"s).(?=.*?盆)盆"→する
"s)(?=.)(?=.*?盆)盆"→する
"s)(?:)(?=.*?盆)盆"→する
s)と(?=.*の間に何かを挿めば何故か回避できそう?
"s)(?:)(?=.*?お?盆)(?=.*?クリスマス)(?=.*?正月)(?:お?盆|クリスマス|正月).*(?:お?盆|クリスマス|正月)"
>>346
気持ち悪いから試してみた
"s)(?=盆)盆"→マッチする
"s)(?=.*?盆)盆"→マッチしない←?!?!
"s).(?=.*?盆)盆"→する
"s)(?=.)(?=.*?盆)盆"→する
"s)(?:)(?=.*?盆)盆"→する
s)と(?=.*の間に何かを挿めば何故か回避できそう?
"s)(?:)(?=.*?お?盆)(?=.*?クリスマス)(?=.*?正月)(?:お?盆|クリスマス|正月).*(?:お?盆|クリスマス|正月)"
348338
2017/10/21(土) 17:14:22.52ID:o7hEIA7f >>347
すごい!>>346のvar文字列に対しpos=4で最も理想的な形でとれました!
pos := RegExMatch(var, "s)(?=((お?+盆)|(クリスマス)|(正月)))(?=.*(?2))(?=.*(?3))(?=.*(?4)).*(?1)", $)
MsgBox,,, pos%pos% %$%, ;pos=4 $=最初のクリスマスから最後の盆
s)^(?=.*?お?盆)(?=.*?クリスマス)(?=.*?正月)
この正規表現の出所はスマホアプリ板2chmate質問スレのテンプレにあるNGワードで
2chmateのシングルラインモードは(?s:ここに正規表現)と書くようです
その辺のやりとりが過去スレ
http://itest.5ch.net/potato/test/read.cgi/applism/1474912259/893-n
にありました
>893
>複数のワードを全て含む書き込みをNG
>(?s:^(?=.*ワード1)(?=.*ワード2)(?=.*ワード3))
>これがどうしても分からん(なぜワードの順番を入れ換えてもマッチするのか)
>
>895
>ワード1を先読みしてそれを含む^にマッチ
>ワード2を先読みしてそれを含む^(?=.*ワード1)にマッチ
>ワード3を先読みしてそれを含む^(?=.*ワード1)(?=.*ワード2)にマッチ
>
>896
>例えば「(先頭)あいうえお」という文字列に^(?=.*うえお)でサーチかける場合
>^(?=.*うえお)は「.*うえお」が続く^のみにマッチするから「うえお」を含む「(先頭)」にマッチ
>つまりこれを何度やっても^に戻ってくる
>で、先読みがどこかで失敗したらそこで成立しなくなるというカラクリ
すごい!>>346のvar文字列に対しpos=4で最も理想的な形でとれました!
pos := RegExMatch(var, "s)(?=((お?+盆)|(クリスマス)|(正月)))(?=.*(?2))(?=.*(?3))(?=.*(?4)).*(?1)", $)
MsgBox,,, pos%pos% %$%, ;pos=4 $=最初のクリスマスから最後の盆
s)^(?=.*?お?盆)(?=.*?クリスマス)(?=.*?正月)
この正規表現の出所はスマホアプリ板2chmate質問スレのテンプレにあるNGワードで
2chmateのシングルラインモードは(?s:ここに正規表現)と書くようです
その辺のやりとりが過去スレ
http://itest.5ch.net/potato/test/read.cgi/applism/1474912259/893-n
にありました
>893
>複数のワードを全て含む書き込みをNG
>(?s:^(?=.*ワード1)(?=.*ワード2)(?=.*ワード3))
>これがどうしても分からん(なぜワードの順番を入れ換えてもマッチするのか)
>
>895
>ワード1を先読みしてそれを含む^にマッチ
>ワード2を先読みしてそれを含む^(?=.*ワード1)にマッチ
>ワード3を先読みしてそれを含む^(?=.*ワード1)(?=.*ワード2)にマッチ
>
>896
>例えば「(先頭)あいうえお」という文字列に^(?=.*うえお)でサーチかける場合
>^(?=.*うえお)は「.*うえお」が続く^のみにマッチするから「うえお」を含む「(先頭)」にマッチ
>つまりこれを何度やっても^に戻ってくる
>で、先読みがどこかで失敗したらそこで成立しなくなるというカラクリ
349338
2017/10/21(土) 17:15:24.33ID:o7hEIA7f s).*?((?=.*?お?盆)(?=.*?クリスマス)(?=.*?正月)(?:お?盆|クリスマス|正月).*(?:お?盆|クリスマス|正月))
AutoHotkeyシングルラインモードでは正規表現の先頭に「^」が有っても無くても先頭からマッチするので
.*?(?=.*?お?盆)(?=.*?クリスマス)(?=.*?正月) ;<----ここで先頭にマッチ(1)
(?:お?盆|クリスマス|正月) ;<----先頭に続く最初に見つかる(?:お?盆|クリスマス|正月)のどれかにマッチ(2)
.*(?:お?盆|クリスマス|正月) ;<----(2)に続く最後に見つかる(?:お?盆|クリスマス|正月)のどれかにマッチ(3)となるようです
s)と(?=.*?の間に最短0文字表現を入れないとマッチしないのはもしかしてバグなんでしょうかね
AutoHotkeyシングルラインモードでは正規表現の先頭に「^」が有っても無くても先頭からマッチするので
.*?(?=.*?お?盆)(?=.*?クリスマス)(?=.*?正月) ;<----ここで先頭にマッチ(1)
(?:お?盆|クリスマス|正月) ;<----先頭に続く最初に見つかる(?:お?盆|クリスマス|正月)のどれかにマッチ(2)
.*(?:お?盆|クリスマス|正月) ;<----(2)に続く最後に見つかる(?:お?盆|クリスマス|正月)のどれかにマッチ(3)となるようです
s)と(?=.*?の間に最短0文字表現を入れないとマッチしないのはもしかしてバグなんでしょうかね
350デフォルトの名無しさん
2017/10/24(火) 15:16:03.89ID:5n0ye5v7 すみません。
自分で書いた正規表現が期待通り動いたのですが理由が分かりません。
どなたか解説お願いします。
Notepad++の置換で、こんなデータに対して
<abcde> <hijk>
<abc> <XYZ>
<dfg>
検索文字列 (?:\s*<([^<>]*)>)?\s*<([^<>]*)>
置換文字列 [$1]\t[$2]\r\n
で置換して、結果がこうなりました。
[abcde] [hijk]
[abc] [XYZ]
[] [dfg]
この三行目の動作なんですが、一行に一個しかデータが無い場合には、二番目のデータとしてキャプチャしたかったので
この動きで良いのですが、なぜこれが出来たのが分かりません。
検索文字列の一つ目の丸カッコの (?:・・・)? <== この量指定子?がそう言う動作になるのでしょうか?
そうだとしたら、なぜそうなるのでしょうか?
あるいはもっと簡潔なパターンはありますか?
宜しくお願い致します。
自分で書いた正規表現が期待通り動いたのですが理由が分かりません。
どなたか解説お願いします。
Notepad++の置換で、こんなデータに対して
<abcde> <hijk>
<abc> <XYZ>
<dfg>
検索文字列 (?:\s*<([^<>]*)>)?\s*<([^<>]*)>
置換文字列 [$1]\t[$2]\r\n
で置換して、結果がこうなりました。
[abcde] [hijk]
[abc] [XYZ]
[] [dfg]
この三行目の動作なんですが、一行に一個しかデータが無い場合には、二番目のデータとしてキャプチャしたかったので
この動きで良いのですが、なぜこれが出来たのが分かりません。
検索文字列の一つ目の丸カッコの (?:・・・)? <== この量指定子?がそう言う動作になるのでしょうか?
そうだとしたら、なぜそうなるのでしょうか?
あるいはもっと簡潔なパターンはありますか?
宜しくお願い致します。
351デフォルトの名無しさん
2017/10/24(火) 15:43:41.40ID:JVoqQJo1 $1と$2が存在するという前提で置換しておきながら$1は?で消えるかもと指定してるから
$1が無いパターンにマッチしたと判断された(適当)
$1が無いパターンにマッチしたと判断された(適当)
352デフォルトの名無しさん
2017/12/01(金) 00:01:15.16ID:J9gYbH6z Spam Mail Killerの正規表現についてすみませんがご教示ください。
メールアドレスに同じドメインのアドレスを複数(たとえば3個以上)含む、という場合
例えばですが
abc@uvw-xyz.com, defg123@uvw-xyz.com, hi456@uvw-xyz.com
このようなアドレスをひとくくりに探し出すにはどのようにすればいいでしょうか?
##/(?=.*@uvy-xyz\.com){3,}/km
とやってみましたがうまく動きませんでした。
正規表現って難しい・・・
メールアドレスに同じドメインのアドレスを複数(たとえば3個以上)含む、という場合
例えばですが
abc@uvw-xyz.com, defg123@uvw-xyz.com, hi456@uvw-xyz.com
このようなアドレスをひとくくりに探し出すにはどのようにすればいいでしょうか?
##/(?=.*@uvy-xyz\.com){3,}/km
とやってみましたがうまく動きませんでした。
正規表現って難しい・・・
353デフォルトの名無しさん
2017/12/01(金) 00:27:29.48ID:lY+8fymW (.+?@uvw-xyz.com){3,}
354デフォルトの名無しさん
2017/12/01(金) 00:37:36.11ID:J9gYbH6z355デフォルトの名無しさん
2017/12/01(金) 01:38:11.93ID:4kQewCo+ ([\w\d._-]+?@uvw-xyz\.com, ){2,}[\w\d._-]+?@uvw-xyz\.com
冗長だけど、とりあえずこれならどのアプリでも動くはず
冗長だけど、とりあえずこれならどのアプリでも動くはず
357デフォルトの名無しさん
2017/12/01(金) 14:56:42.38ID:GNYmtVXo ([\w\d._-]+?@uvw-xyz\.com(,\s?)?){3,}
メールアドレスに注目するなら、これでもいいかな
メールアドレスに注目するなら、これでもいいかな
358デフォルトの名無しさん
2017/12/01(金) 15:03:45.52ID:GNYmtVXo スペースのパターンも考慮すると、こちらのほうがいいかも
([\w\d._-]+?@uvw-xyz\.com(,\s*)?){3,}
([\w\d._-]+?@uvw-xyz\.com(,\s*)?){3,}
359デフォルトの名無しさん
2017/12/01(金) 19:07:13.56ID:lDYRmGG1 拘り始めるときりがない
複数の記述方法があるしそれで制限も変わる
https://ja.m.wikipedia.org/wiki/%E3%83%A1%E3%83%BC%E3%83%AB%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9
軽く「正規表現 メールアドレス」でググればメールアドレスを糞まじめに正規表現で頑張る意味がないのが頭の5個も読めば理解できるでしょ
依頼者がとりあえず解決したと言ってるんだからこれ以上は現状不要だよ
複数の記述方法があるしそれで制限も変わる
https://ja.m.wikipedia.org/wiki/%E3%83%A1%E3%83%BC%E3%83%AB%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9
軽く「正規表現 メールアドレス」でググればメールアドレスを糞まじめに正規表現で頑張る意味がないのが頭の5個も読めば理解できるでしょ
依頼者がとりあえず解決したと言ってるんだからこれ以上は現状不要だよ
360352
2017/12/01(金) 23:13:24.55ID:J9gYbH6z361デフォルトの名無しさん
2017/12/02(土) 07:41:29.80ID:dQK/O/Fy362デフォルトの名無しさん
2017/12/02(土) 09:41:49.64ID:mi+Z/zsa >>360
横槍だけど358は最初に与えられた条件(3回出現)と違って3回“連続”出現だから留意してね
そして\wは\d_を含んでいるからまだ冗長だ、ついでに+?の?も{3,}の,もシンプルじゃないね
最初の質問の=を:にするだけでよかったと思うよ
^(?>.*?@uvy-xyz\.com){3}
横槍だけど358は最初に与えられた条件(3回出現)と違って3回“連続”出現だから留意してね
そして\wは\d_を含んでいるからまだ冗長だ、ついでに+?の?も{3,}の,もシンプルじゃないね
最初の質問の=を:にするだけでよかったと思うよ
^(?>.*?@uvy-xyz\.com){3}
363デフォルトの名無しさん
2017/12/02(土) 10:25:05.48ID:hDsQS9Tu 依頼者が充足宣言してるのにね
364デフォルトの名無しさん
2017/12/02(土) 10:49:44.12ID:SQFbqxvb 正規表現の難しいところは引き際。いろんな意味で。
365デフォルトの名無しさん
2017/12/02(土) 20:04:53.17ID:aLfswfyL 質問がメインのスレじゃないんだから、
探究することは悪いことじゃないよ。
探究することは悪いことじゃないよ。
366デフォルトの名無しさん
2017/12/02(土) 20:22:17.17ID:P9eUjlcX なにいってんだこいつ?
1
> 質問する場合は必ず実装言語や処理系ソフトウェア名を示してください。
2 質問テンプレ
1
> 質問する場合は必ず実装言語や処理系ソフトウェア名を示してください。
2 質問テンプレ
367デフォルトの名無しさん
2017/12/02(土) 20:32:56.34ID:+fOAFawt > 質問する場合は
 ̄ ̄ ̄ ̄ ̄ ̄
 ̄ ̄ ̄ ̄ ̄ ̄
368デフォルトの名無しさん
2017/12/02(土) 22:11:28.09ID:oKFwf0E4 ほとんど質問がルートのレスツリーばかり
テンプレも質問がらみばかり
引き際誤るとここまで人はみっともなくなれるのか
テンプレも質問がらみばかり
引き際誤るとここまで人はみっともなくなれるのか
369デフォルトの名無しさん
2017/12/02(土) 22:44:47.63ID:1qjImk2p 自己紹介乙
370デフォルトの名無しさん
2017/12/02(土) 23:58:10.96ID:NhirO4Ud 引き際重要
371デフォルトの名無しさん
2017/12/10(日) 08:22:53.66ID:DxswVEqC Google Apps Scriptで、下記の時系列データを配列で取得したいのだけど、どうしたら良いですか?
https://www.morningstar.co.jp/RankingWeb/IndicesPart.do?indcCode=15
https://www.morningstar.co.jp/RankingWeb/IndicesPart.do?indcCode=15
372デフォルトの名無しさん
2017/12/10(日) 17:27:12.44ID:UOQUQi73 どこまでやりましたか
373デフォルトの名無しさん
2017/12/10(日) 18:40:59.63ID:DxswVEqC あとは正規表現のとこだけです。
<tr>
<td class="center">12/08</td>
<td class="center">169</td>
<td class="center">17</td>
<td class="center"> </td>
<td class="center">26</td>
</tr>
<tr>
<td class="center">12/08</td>
<td class="center">169</td>
<td class="center">17</td>
<td class="center"> </td>
<td class="center">26</td>
</tr>
374デフォルトの名無しさん
2017/12/11(月) 00:06:26.95ID:4q7JrCp0 jQuery のセレクターを使え
$('td.center').text()
$('td.center').text()
375デフォルトの名無しさん
2017/12/11(月) 01:01:11.97ID:06if4WxO376デフォルトの名無しさん
2017/12/11(月) 07:53:34.73ID:HLwn5MaC 急にHTMLパーサなんて言われてもチンプンカンプンやわ
377デフォルトの名無しさん
2017/12/11(月) 09:34:01.52ID:78kXJ+6a すぐできるだろうと思って泥沼にハマることが多いわ、こりだすとキリがないわで、あきらめどころが難しいのが正規表現。
自分の中で制限時間(10分など。忙しさによる)を設けて、
それ以上時間がかかる場合は正規表現による解決するのをあきらめるってのが、運用上は合理的だろうね。
正規表現そのものの学習・調査をしたい場合は、もちろん違うが。
このスレの客層はどっちなのってことなのかな。
自分の中で制限時間(10分など。忙しさによる)を設けて、
それ以上時間がかかる場合は正規表現による解決するのをあきらめるってのが、運用上は合理的だろうね。
正規表現そのものの学習・調査をしたい場合は、もちろん違うが。
このスレの客層はどっちなのってことなのかな。
378デフォルトの名無しさん
2017/12/11(月) 14:24:59.19ID:HLwn5MaC jQueryやらHTMLパーサやら能書きばっかり
正規表現で出来たから、もうええわ
正規表現で出来たから、もうええわ
379デフォルトの名無しさん
2017/12/12(火) 00:30:19.52ID:u8BojTW8380デフォルトの名無しさん
2017/12/14(木) 17:08:16.97ID:lv6L9acp Perl互換ですが,
ファイルの先頭から末尾までをマッチさせる,つまりファイルのテキストを全部取得するにはどう書いたらいいのでしょうか?
ファイルの先頭から末尾までをマッチさせる,つまりファイルのテキストを全部取得するにはどう書いたらいいのでしょうか?
381デフォルトの名無しさん
2017/12/14(木) 17:36:18.19ID:lv6L9acp 解決しました
([\s\S]*)で出来ました.
([\s\S]*)で出来ました.
382デフォルトの名無しさん
2017/12/16(土) 03:31:44.42ID:ArLhqftT 正規表現は構文解析器(parser)じゃないから、
XML, HTML のように、文書に構造があるものは解析できない。バグる
例えば、コメント部に、
<td
と書かれていても、正規表現では該当してしまう
それに要素間に、祖先・子孫などの関係があって、入れ子構造になるから、
開始・終了タグが一致しない
XML, HTML のように、文書に構造があるものは解析できない。バグる
例えば、コメント部に、
<td
と書かれていても、正規表現では該当してしまう
それに要素間に、祖先・子孫などの関係があって、入れ子構造になるから、
開始・終了タグが一致しない
383デフォルトの名無しさん
2017/12/18(月) 22:01:18.38ID:fLY/8wUq バックスラッシュt、でいいやろ
384デフォルトの名無しさん
2017/12/18(月) 23:20:44.39ID:LMSHu3dl 正規表現でできることできないことの見極めが難しい。
うまくできない原因が、自分の未熟によるものか、そもそも誰がやろうが無理なのか、という見極め。
これは正規表現に限った話でないが、正規表現を使っていると遭遇することが非常に多い。
うまくできない原因が、自分の未熟によるものか、そもそも誰がやろうが無理なのか、という見極め。
これは正規表現に限った話でないが、正規表現を使っていると遭遇することが非常に多い。
385デフォルトの名無しさん
2017/12/18(月) 23:31:28.83ID:Xb/4cQMD 自分が使ってる範囲で使えるものか完璧を目指すかで違ってくるよ
386デフォルトの名無しさん
2017/12/25(月) 17:59:18.23ID:9hKP95Nk もはや姓のサイトウ(斉藤、齊藤など)に適した検索方法って正規表現ぐらいじゃね?
プレス発表 「文字情報基盤整備事業」で推進していた漢字6万文字の国際規格化が完了:IPA 独立行政法人 情報処理推進機構
https://www.ipa.go.jp/about/press/20171225.html
プレス発表 「文字情報基盤整備事業」で推進していた漢字6万文字の国際規格化が完了:IPA 独立行政法人 情報処理推進機構
https://www.ipa.go.jp/about/press/20171225.html
387デフォルトの名無しさん
2017/12/25(月) 18:01:37.66ID:9hKP95Nk というか外字だとマルチプラットホーム対応した検索アルゴリズムを作ることが困難だったので、国際規格化されただけまだマシか。
388デフォルトの名無しさん
2017/12/25(月) 22:40:21.08ID:8yZmKHLj389デフォルトの名無しさん
2018/01/02(火) 13:30:58.99ID:bFwGimBi 新年おめでとうございます
スマホアプリで正規表現を使いたくて調べたレベルで恐縮です
'\s'は空白文字だそうですが半角スペースのみを表現できないでしょうか?
また'/'を用いて半角スペースを表す方法はありませんでしょうか?
宜しくお願い致します
スマホアプリで正規表現を使いたくて調べたレベルで恐縮です
'\s'は空白文字だそうですが半角スペースのみを表現できないでしょうか?
また'/'を用いて半角スペースを表す方法はありませんでしょうか?
宜しくお願い致します
390デフォルトの名無しさん
2018/01/02(火) 19:00:49.45ID:I9szCE3x 何故その程度ググらない?
半角スペースはそのまま半角スペースだ
半角スペースはそのまま半角スペースだ
391デフォルトの名無しさん
2018/01/02(火) 20:13:20.96ID:bFwGimBi392デフォルトの名無しさん
2018/01/06(土) 20:03:46.61ID:eEPcZWZO 社外に情報を持ち出せず脳内再生ですみませんが、
以下の抽出条件を教えてください
●Regular Expressionの使用環境
Excel/VBAの参照設定で5.5
C#からのソースを移植中に、
Executeメソッドで(おそらく後読みができず)エラーとなっているが、
正規表現初心者で手も足も出ず…
●検索か置換か?
検索
●説明
複数行の
任意のホワイトスペースhostname: 後の文字列を検索し、
直後のドメイン名を取得したい。ただし、IPアドレスは除外したい。
●対象データ
hostname: hogehoge.com改行
hostname: mogemoge.com改行
hostname: 192.168.1.1改行
●希望する結果
hogehoge.com
mogemoge.com
よろしくお願いします。
以下の抽出条件を教えてください
●Regular Expressionの使用環境
Excel/VBAの参照設定で5.5
C#からのソースを移植中に、
Executeメソッドで(おそらく後読みができず)エラーとなっているが、
正規表現初心者で手も足も出ず…
●検索か置換か?
検索
●説明
複数行の
任意のホワイトスペースhostname: 後の文字列を検索し、
直後のドメイン名を取得したい。ただし、IPアドレスは除外したい。
●対象データ
hostname: hogehoge.com改行
hostname: mogemoge.com改行
hostname: 192.168.1.1改行
●希望する結果
hogehoge.com
mogemoge.com
よろしくお願いします。
393デフォルトの名無しさん
2018/01/06(土) 20:08:09.69ID:eEPcZWZO ●対象データ
△△hostname:△hogehoge.com改行
△△△△hostname:△mogemoge.com改行
△hostname:△192.168.1.1改行
のようにスペースが入っています。
Janeでカキコするとスペースが消えたので補足します。
△△hostname:△hogehoge.com改行
△△△△hostname:△mogemoge.com改行
△hostname:△192.168.1.1改行
のようにスペースが入っています。
Janeでカキコするとスペースが消えたので補足します。
394デフォルトの名無しさん
2018/01/06(土) 21:13:44.07ID:RuMnMvof ホスト名の条件が分からんからドメイン名と同等と仮定する
マルチラインモードで
^\s*(?:[A-Za-z](?:[A-Za-z0-9\-]{0,61}[A-Za-z0-9])?\.)*[A-Za-z](?:[A-Za-z0-9\-]{0,61}[A-Za-z0-9])?:[^\S\x0A\x0D]*((?:[A-Za-z](?:[A-Za-z0-9\-]{0,61}[A-Za-z0-9])?\.)*[A-Za-z](?:[A-Za-z0-9\-]{0,61}[A-Za-z0-9])?)$
としてグループ1のキャプチャを見る, とか
つうかVBAなら正規表現で頑張るより改行文字と:でそれぞれsplitしてループ回しながらtrimするのが自然だと思うけど
マルチラインモードで
^\s*(?:[A-Za-z](?:[A-Za-z0-9\-]{0,61}[A-Za-z0-9])?\.)*[A-Za-z](?:[A-Za-z0-9\-]{0,61}[A-Za-z0-9])?:[^\S\x0A\x0D]*((?:[A-Za-z](?:[A-Za-z0-9\-]{0,61}[A-Za-z0-9])?\.)*[A-Za-z](?:[A-Za-z0-9\-]{0,61}[A-Za-z0-9])?)$
としてグループ1のキャプチャを見る, とか
つうかVBAなら正規表現で頑張るより改行文字と:でそれぞれsplitしてループ回しながらtrimするのが自然だと思うけど
395デフォルトの名無しさん
2018/01/06(土) 22:13:51.90ID:eEPcZWZO >>394
なるほど、hostnameを検索して後読みするのではなく、
ドメインで合致させつつ、IPアドレスを除外するというわけですね。
理解のために改行してみました。
^\s*
(?:[A-Za-z](?:[A-Za-z0-9\-]{0,61}[A-Za-z0-9])?\.)*[A-Za-z](?:[A-Za-z0-9\-]{0,61}[A-Za-z0-9])
?:[^\S\x0A\x0D]
*(
(?:[A-Za-z](?:[A-Za-z0-9\-]{0,61}[A-Za-z0-9])?\.)*[A-Za-z](?:[A-Za-z0-9\-]{0,61}[A-Za-z0-9])
?)$
のうち、
[A-Za-z](?:[A-Za-z0-9\-]{0,61}[A-Za-z0-9])?\.)*[A-Za-z](?:[A-Za-z0-9\-]{0,61}[A-Za-z0-9])
がドメイン、
[^\S\x0A\x0D]
がIPアドレス除外ですね。
私もVBAならInstrとMIDを駆使したほうが可読性も生産性も上がると思うのですが、
過去のC#とPerlの正規表現コードを再利用しつつ、将来的にはPythonとかにも応用できるように
正規表現でがんばれ、との指示を受けたのですが、
いきなりVBAでは後読みできないとか、まわりに有識者のいない罠にはまり難儀しています。
なるほど、hostnameを検索して後読みするのではなく、
ドメインで合致させつつ、IPアドレスを除外するというわけですね。
理解のために改行してみました。
^\s*
(?:[A-Za-z](?:[A-Za-z0-9\-]{0,61}[A-Za-z0-9])?\.)*[A-Za-z](?:[A-Za-z0-9\-]{0,61}[A-Za-z0-9])
?:[^\S\x0A\x0D]
*(
(?:[A-Za-z](?:[A-Za-z0-9\-]{0,61}[A-Za-z0-9])?\.)*[A-Za-z](?:[A-Za-z0-9\-]{0,61}[A-Za-z0-9])
?)$
のうち、
[A-Za-z](?:[A-Za-z0-9\-]{0,61}[A-Za-z0-9])?\.)*[A-Za-z](?:[A-Za-z0-9\-]{0,61}[A-Za-z0-9])
がドメイン、
[^\S\x0A\x0D]
がIPアドレス除外ですね。
私もVBAならInstrとMIDを駆使したほうが可読性も生産性も上がると思うのですが、
過去のC#とPerlの正規表現コードを再利用しつつ、将来的にはPythonとかにも応用できるように
正規表現でがんばれ、との指示を受けたのですが、
いきなりVBAでは後読みできないとか、まわりに有識者のいない罠にはまり難儀しています。
396デフォルトの名無しさん
2018/01/06(土) 22:25:41.73ID:RuMnMvof > がIPアドレス除外ですね
違う
\Sは空白文字以外だから[^\S\x0A\x0D]は空白文字以外とCR, LFの「何れでもない」場合, つまり空白文字からCRとLFを除外したもの
そもそも(先頭が英字でなければならない)ドメイン名でマッチングしてるんだから先頭が数字で始まるIPアドレスを後から除外する必要はない
再利用性に関しても, 後読み出来るエンジンかそうでないかで既に失われてるんじゃないかね
キャプチャの取得方法なんぞ言語ごとに大分違うしな
仕事で使うなら尚更メンテし辛い上に遅い正規表現を使わにゃならん積極的理由は無い
splitでループ回せば入力のサイズに対して線型時間で終わることが保証される上に保守性も高い
違う
\Sは空白文字以外だから[^\S\x0A\x0D]は空白文字以外とCR, LFの「何れでもない」場合, つまり空白文字からCRとLFを除外したもの
そもそも(先頭が英字でなければならない)ドメイン名でマッチングしてるんだから先頭が数字で始まるIPアドレスを後から除外する必要はない
再利用性に関しても, 後読み出来るエンジンかそうでないかで既に失われてるんじゃないかね
キャプチャの取得方法なんぞ言語ごとに大分違うしな
仕事で使うなら尚更メンテし辛い上に遅い正規表現を使わにゃならん積極的理由は無い
splitでループ回せば入力のサイズに対して線型時間で終わることが保証される上に保守性も高い
397デフォルトの名無しさん
2018/01/07(日) 12:17:55.91ID:ln22xrzP398デフォルトの名無しさん
2018/01/10(水) 23:41:51.90ID:qa5Jh8Cf399デフォルトの名無しさん
2018/01/11(木) 10:30:10.40ID:Xo4biI2J ^[△]*hostname:[△]*([0-9.]*[A-Za-z\-][0-9A-Za-z.\-]*)$
^[△]*hostname:[△]*([0-9.]*[^\s0-9.]\S*)$
hostname:△mevius.5ch.net
hostname:△86886.jp
hostname:△日本語.jp
hostname:△はじめよう.みんな
^[△]*hostname:[△]*([0-9.]*[^\s0-9.]\S*)$
hostname:△mevius.5ch.net
hostname:△86886.jp
hostname:△日本語.jp
hostname:△はじめよう.みんな
400デフォルトの名無しさん
2018/01/11(木) 12:30:44.58ID:/99JjIqr401デフォルトの名無しさん
2018/01/11(木) 13:56:21.29ID:/99JjIqr402デフォルトの名無しさん
2018/01/11(木) 17:51:18.77ID:WzsJRajU あぁ, hostnameは固定文字列なのか
なら
^\s*hostname:[^\S\x0A\x0D]*((?:[A-Za-z](?:[A-Za-z0-9\-]{0,61}[A-Za-z0-9])?\.)*[A-Za-z](?:[A-Za-z0-9\-]{0,61}[A-Za-z0-9])?)$
だけど
なら
^\s*hostname:[^\S\x0A\x0D]*((?:[A-Za-z](?:[A-Za-z0-9\-]{0,61}[A-Za-z0-9])?\.)*[A-Za-z](?:[A-Za-z0-9\-]{0,61}[A-Za-z0-9])?)$
だけど
403デフォルトの名無しさん
2018/01/16(火) 12:15:21.97ID:RA24ssqp 正規表現の書き方教えてください。
CentOS 7のサーバーにURLを要求した際、下記のような余計な文字が付きます。付くことがあります。
/ディレクトリ/ファイル名.拡張子%01
/ディレクトリ/desktop.inib%01
/ディレクトリ/desktop.inie%01
またファイル名の後に、
%EE%81%9F%E2%81%80%EE%81%97%C9%84とか
%E6%89%B8%E7%A8%B7%E4%99%BA%E5%A5%97%E3%8D%95%E4%BD%8C%E6%A1%B2%01とか
ファイル名の語尾に不特定の文字が勝手に付く場合もあります。
ディレクトリを要求したときも
ディレクトリの語尾に%E4%84%B7など(これも不特定)が付いてしまうことがあります。
これを除外するには、
正規表現でどのように書けば良いのでしょうか?
よろしくお願いします。
CentOS 7のサーバーにURLを要求した際、下記のような余計な文字が付きます。付くことがあります。
/ディレクトリ/ファイル名.拡張子%01
/ディレクトリ/desktop.inib%01
/ディレクトリ/desktop.inie%01
またファイル名の後に、
%EE%81%9F%E2%81%80%EE%81%97%C9%84とか
%E6%89%B8%E7%A8%B7%E4%99%BA%E5%A5%97%E3%8D%95%E4%BD%8C%E6%A1%B2%01とか
ファイル名の語尾に不特定の文字が勝手に付く場合もあります。
ディレクトリを要求したときも
ディレクトリの語尾に%E4%84%B7など(これも不特定)が付いてしまうことがあります。
これを除外するには、
正規表現でどのように書けば良いのでしょうか?
よろしくお願いします。
404デフォルトの名無しさん
2018/01/16(火) 13:31:33.72ID:y9BMfGeo https://social.technet.microsoft.com/Forums/ja-JP/5debbbcd-1def-42f8-a495-f655ebd58c4b/windows10-1709-webdav-?forum=win10itprogeneralJP
コレか?
URLエンコード文字だけなら簡単だがASCIIが入るとなると容易ではない(どこまでがファイル名か判別出来ない)
クライアント側のアップデートを待つ方が賢明な気がする
コレか?
URLエンコード文字だけなら簡単だがASCIIが入るとなると容易ではない(どこまでがファイル名か判別出来ない)
クライアント側のアップデートを待つ方が賢明な気がする
405デフォルトの名無しさん
2018/01/16(火) 13:45:59.33ID:y9BMfGeo あと忘れてたけどWebDAVならクライアントにWinSCP使うとか
406403
2018/01/16(火) 14:48:31.79ID:RA24ssqp ありがとうございます。
自分の場合「空」にはなってませんが似てますね。
便利なクライアントアプリケーション探してみます。
自分の場合「空」にはなってませんが似てますね。
便利なクライアントアプリケーション探してみます。
407デフォルトの名無しさん
2018/01/16(火) 17:00:43.44ID:1yOH1J8J pattern = /^(.*)(?!%)/
p pattern.match('abc%123')
Ruby で否定先読みを使ったら、「abc」だけ取れない。
すべての文字列にマッチしてしまう
なんでやねんw
p pattern.match('abc%123')
Ruby で否定先読みを使ったら、「abc」だけ取れない。
すべての文字列にマッチしてしまう
なんでやねんw
408デフォルトの名無しさん
2018/01/16(火) 17:14:43.11ID:G8V+pnDB なんでやもなにも、.* だから全体にマッチするよ。1文字ごとにチェックするか、文字クラスを使いなさい。
409デフォルトの名無しさん
2018/01/16(火) 18:31:44.93ID:1yOH1J8J Ruby では、先頭から、% を探して、それ以降を削除する
str = '/dir/desktop.inib%01%EE%81'
pos = str.index('%')
if pos
str = str.slice(0...pos)
end
puts str
結果
/dir/desktop.inib
str = '/dir/desktop.inib%01%EE%81'
pos = str.index('%')
if pos
str = str.slice(0...pos)
end
puts str
結果
/dir/desktop.inib
410409
2018/01/16(火) 19:25:09.57ID:1yOH1J8J 正規表現でも、できた。
Ruby では、先頭から、% 以外の文字を探す
pattern = /^[^%]+/
str = '/dir/desktop.inib%01%EE%81'
puts pattern.match str
結果
/dir/desktop.inib
Ruby では、先頭から、% 以外の文字を探す
pattern = /^[^%]+/
str = '/dir/desktop.inib%01%EE%81'
puts pattern.match str
結果
/dir/desktop.inib
411デフォルトの名無しさん
2018/01/16(火) 20:18:43.79ID:y9BMfGeo 要件には書いてないけど, .iniまでが正しいファイル名だと思うよ
その後ろのbとかeもゴミ
その後ろのbとかeもゴミ
412デフォルトの名無しさん
2018/01/16(火) 22:39:12.31ID:9E60uHWe どういう法則性でb,eが付いたのかがわからないと、
b,eの他にも付くのがあるのか、また付かないこともあるのかもわからん
例えば、hoge.exee%01とかになるのか?
b,eの他にも付くのがあるのか、また付かないこともあるのかもわからん
例えば、hoge.exee%01とかになるのか?
413403
2018/01/17(水) 15:18:31.78ID:BVJUZk9+414413
2018/01/17(水) 17:17:53.77ID:BVJUZk9+ 最後に変な文章を残してしまいました。
すべてが1byte文字を要求するときは、
そんな変なゴミは付きにくいと書こうと思ったのですが、
まだ確証が無いので無視して結構です。
すべてが1byte文字を要求するときは、
そんな変なゴミは付きにくいと書こうと思ったのですが、
まだ確証が無いので無視して結構です。
415デフォルトの名無しさん
2018/02/07(水) 23:42:01.50ID:3vNjEx0B ●Regular Expressionの使用環境
桜エディタ(テキストエディタ)
●検索か置換か?
置き換え
●説明
文字数、文字種はいろいろです。ただしすべて半角(1バイト文字)です。
結果として、<>内の文字だけにできればどんな方法でも構いません
必要な情報かわかりませんが、<>の外には、<>があることはありません。
asqa>w3e<a>s98<as897kja> ←こんな感じの行はありません。
行末は必ず、>で終わり、必要な文字は必ず<>でくくられたものの中にあります。
いらない文字<必要な文字>ここに改行が入る という書式は絶対です。
●対象データ
R&^&*(!TYUIKM<slihfd>
BA%(*&%ASAS<asdlikh>
TF^(VB(*&N<a09sfyighkljn>
●希望する結果
slihfd
asdlikh
a09sfyighkljn
よろしくお願いいたします。
桜エディタ(テキストエディタ)
●検索か置換か?
置き換え
●説明
文字数、文字種はいろいろです。ただしすべて半角(1バイト文字)です。
結果として、<>内の文字だけにできればどんな方法でも構いません
必要な情報かわかりませんが、<>の外には、<>があることはありません。
asqa>w3e<a>s98<as897kja> ←こんな感じの行はありません。
行末は必ず、>で終わり、必要な文字は必ず<>でくくられたものの中にあります。
いらない文字<必要な文字>ここに改行が入る という書式は絶対です。
●対象データ
R&^&*(!TYUIKM<slihfd>
BA%(*&%ASAS<asdlikh>
TF^(VB(*&N<a09sfyighkljn>
●希望する結果
slihfd
asdlikh
a09sfyighkljn
よろしくお願いいたします。
416デフォルトの名無しさん
2018/02/08(木) 00:23:12.83ID:kN+YdVUy ^[^<>]*<([^<>]+)>$
$1
$1
417デフォルトの名無しさん
2018/02/08(木) 23:06:15.86ID:VxK8nSc/ [^<>^] サンクス
418デフォルトの名無しさん
2018/02/08(木) 23:24:13.78ID:Zisu4Ynz >>416
ありがとうございます。うまく抽出できました。
ありがとうございます。うまく抽出できました。
419デフォルトの名無しさん
2018/02/08(木) 23:37:41.58ID:kN+YdVUy このぐらいの正規表現なら基本だし, 覚えると正規表現の載ってるエディタでの編集が楽になるよ
とりあえずPerl互換を勉強してみるといい
とりあえずPerl互換を勉強してみるといい
420デフォルトの名無しさん
2018/02/14(水) 13:35:37.03ID:2LP2x+pK C#なんですが
[ああ]おおおおお
[いいい]こここここ
[うう][ええ]そそそそそ
ととととと[たた]
↓
おおおおお
こここここ
そそそそそ
ととととと[たた]
にしたいんですが、どうしたらいいでしょうか。
※先頭じゃない文中の[はは]は残したい
[ああ]おおおおお
[いいい]こここここ
[うう][ええ]そそそそそ
ととととと[たた]
↓
おおおおお
こここここ
そそそそそ
ととととと[たた]
にしたいんですが、どうしたらいいでしょうか。
※先頭じゃない文中の[はは]は残したい
421デフォルトの名無しさん
2018/02/16(金) 13:56:45.89ID:uX7uVTrc \[[^\]]*?\](?!$)
ところによっては\[[^\]]*?\](?!(?:\n|$))
ところによっては\[[^\]]*?\](?!(?:\n|$))
422デフォルトの名無しさん
2018/02/16(金) 14:10:38.80ID:ga78Zu+3 マルチラインモード
^(?:\[([^\[\]])\1*\])+
マッチ部分を除去
^(?:\[([^\[\]])\1*\])+
マッチ部分を除去
423420
2018/02/16(金) 14:11:39.72ID:CWd36B/o 1行目でバッチリ
感動しました!!!
感動しました!!!
424デフォルトの名無しさん
2018/02/16(金) 14:15:41.25ID:CPKH/1dQ それ文末以外消えるけどええのん
425421
2018/02/16(金) 15:30:22.93ID:mPXTHkFg >>424
文中は消えていいんじゃない?
>>420に
> [うう][ええ]そそそそそ
> そそそそそ
ってあるし
あ、
> ※先頭じゃない文中の[はは]は残したい
この[はは]はマッチしたらダメなのか
これ例の中においてくんないかなー
というか定義がよくわからんちん
^\[.*\](?!$)
ところによっては(?<=(?:^|\n))\[.*\](?!(?:\n|$))
マッチ
[ああ]おおおおお
[いいい]こここここ
[うう][ええ]そそそそそ
[たた]ななはは[まま]やや
→[たた]ななはは[まま]
[たた]ななははまま[やや]
→[たた]
アンマッチ
ととととと[たた]
ちち[はは]ぱぱまま
文中は消えていいんじゃない?
>>420に
> [うう][ええ]そそそそそ
> そそそそそ
ってあるし
あ、
> ※先頭じゃない文中の[はは]は残したい
この[はは]はマッチしたらダメなのか
これ例の中においてくんないかなー
というか定義がよくわからんちん
^\[.*\](?!$)
ところによっては(?<=(?:^|\n))\[.*\](?!(?:\n|$))
マッチ
[ああ]おおおおお
[いいい]こここここ
[うう][ええ]そそそそそ
[たた]ななはは[まま]やや
→[たた]ななはは[まま]
[たた]ななははまま[やや]
→[たた]
アンマッチ
ととととと[たた]
ちち[はは]ぱぱまま
426421
2018/02/16(金) 15:30:54.45ID:mPXTHkFg >>425
[たた]ななはは[まま]やや
の[まま]を含めずマッチしたい([たた])ならかなり複雑になりそうでちょっといますぐは思いつかないや
それってつまり
行頭[
行頭から括弧が繋がり、且つ、行末]を含めない範囲
なら
[たた][なな][はは][まま][やや]
のマッチが
→[たた][なな][はは][まま]
でいいのか、それとも行そのものがアンマッチなのかよーわからんし
[たた]ななはは[まま]やや
の[まま]を含めずマッチしたい([たた])ならかなり複雑になりそうでちょっといますぐは思いつかないや
それってつまり
行頭[
行頭から括弧が繋がり、且つ、行末]を含めない範囲
なら
[たた][なな][はは][まま][やや]
のマッチが
→[たた][なな][はは][まま]
でいいのか、それとも行そのものがアンマッチなのかよーわからんし
427デフォルトの名無しさん
2018/02/16(金) 15:55:42.80ID:CPKH/1dQ428デフォルトの名無しさん
2018/02/16(金) 15:57:06.09ID:CWd36B/o429デフォルトの名無しさん
2018/02/16(金) 16:00:32.77ID:CWd36B/o すみません
[ああ]おおおおお → おおおおお
[あああ]おおおおお → おおおおお
[ああ][いい]おおおおお → おおおおお
あああああ[いい] → あああああ[いい]
あああ[いい]うう → あああ[いい]うう
です。
先頭付近の [] は消したいけど、それ以外は残したい、って風です。
[ああ]おおおおお → おおおおお
[あああ]おおおおお → おおおおお
[ああ][いい]おおおおお → おおおおお
あああああ[いい] → あああああ[いい]
あああ[いい]うう → あああ[いい]うう
です。
先頭付近の [] は消したいけど、それ以外は残したい、って風です。
430421
2018/02/16(金) 16:24:42.64ID:rLsYeXBU >>429
[たた]ななはは[まま]やや
は?
[たた][なな][はは][まま][やや]
はどーなんの?
[あいう[かきく]たちつ]
[あいう[かきく]]たちつ
とか括弧内包の場合どーなんのとかも
あと行末も係わるんだから、例の同じ行に余計な文字列入れないで(たぶんこの件では大過ないと思うけど)
[たた]ななはは[まま]やや
は?
[たた][なな][はは][まま][やや]
はどーなんの?
[あいう[かきく]たちつ]
[あいう[かきく]]たちつ
とか括弧内包の場合どーなんのとかも
あと行末も係わるんだから、例の同じ行に余計な文字列入れないで(たぶんこの件では大過ないと思うけど)
431421
2018/02/16(金) 16:25:23.31ID:rLsYeXBU >>430
内包無視するとしたら
(?<=^)(?:\[[^\[]*?\])+(?!$)
ところによって(?<=(?:^|\n))(?:\[[^\[]*?\])+(?!(?:\n|$))
かね
>>429を満たし、
[たた]ななはは[まま]やや
→[たた]
[たた][なな][はは][まま][やや]
→[たた][なな][はは][まま]
となるし
たぶん
行頭[ および 行頭[に対応する]までマッチ
行頭[ および 行頭[に対応する]から括弧が繋がり、且つ、行末] および 行末]に対応する[までを含めない範囲
あたりなんだろうなー
ぱっと思いつくのはちょめちょめしたダウンロードファイルのリネームをしたいようなかんじかね
内包無視するとしたら
(?<=^)(?:\[[^\[]*?\])+(?!$)
ところによって(?<=(?:^|\n))(?:\[[^\[]*?\])+(?!(?:\n|$))
かね
>>429を満たし、
[たた]ななはは[まま]やや
→[たた]
[たた][なな][はは][まま][やや]
→[たた][なな][はは][まま]
となるし
たぶん
行頭[ および 行頭[に対応する]までマッチ
行頭[ および 行頭[に対応する]から括弧が繋がり、且つ、行末] および 行末]に対応する[までを含めない範囲
あたりなんだろうなー
ぱっと思いつくのはちょめちょめしたダウンロードファイルのリネームをしたいようなかんじかね
432デフォルトの名無しさん
2018/02/16(金) 16:26:09.97ID:dBpGhFbZ 仕様に不備があると作る方は大変だな
433デフォルトの名無しさん
2018/02/16(金) 17:00:58.65ID:Q4bZpk0j 正規表現の使いどころってどんなところですかね?
普通レベルのプログラマから見ると可読性低くて保守性も悪い気がする
タグの要素を最初にバッと配列に入れやすいとか?
普通レベルのプログラマから見ると可読性低くて保守性も悪い気がする
タグの要素を最初にバッと配列に入れやすいとか?
434デフォルトの名無しさん
2018/02/16(金) 17:11:19.84ID:GgVv8IsN >>433
可読性低くて保守性も悪いっていうのは本当にその通り
プログラミングで使うならまずは(正規表現が非常に直感的でない限りは)正規表現以外の選択肢を考えるべきで, それが可読性や保守性を上げないとなった上で正規表現が選択されるのがよい
勿論保守性や可読性を気にしないワンライナーとかであれば気にする必要はないが
あとはエディタやgrepなんかだと他に有力な選択肢がないから正規表現になる
可読性低くて保守性も悪いっていうのは本当にその通り
プログラミングで使うならまずは(正規表現が非常に直感的でない限りは)正規表現以外の選択肢を考えるべきで, それが可読性や保守性を上げないとなった上で正規表現が選択されるのがよい
勿論保守性や可読性を気にしないワンライナーとかであれば気にする必要はないが
あとはエディタやgrepなんかだと他に有力な選択肢がないから正規表現になる
435デフォルトの名無しさん
2018/02/16(金) 17:18:48.02ID:h4N2NTdR 単純に、
(?m)^\[.*\](.*)
じゃだめなん?
(?m)^\[.*\](.*)
じゃだめなん?
436デフォルトの名無しさん
2018/02/16(金) 17:23:34.33ID:GgVv8IsN437デフォルトの名無しさん
2018/02/16(金) 17:34:31.04ID:dBpGhFbZ438デフォルトの名無しさん
2018/02/16(金) 18:30:54.06ID:Q4bZpk0j439デフォルトの名無しさん
2018/02/16(金) 19:13:24.69ID:M8XJLm2H440デフォルトの名無しさん
2018/02/16(金) 20:46:56.42ID:d9VDf+sb >>420
$# 「行頭部分にある 1 個以上の \[[^\]*\] を削除」と初見で思ったのだが、違うのか?
$# それとも C# でどうやるかわからないという話? 申し訳ないが C# は知らない。
$
$cat a_in
[ああ]おおおおお
[いいい]こここここ
[うう][ええ]そそそそそ
ととととと[たた]
[ええ]あああ[いい]うう
$perl -pe 's/^(\[[^\]]*\])+//' < a_in
おおおおお
こここここ
そそそそそ
ととととと[たた]
あああ[いい]うう
$perl -0777 -pe 's/^(\[[^\]]*\])+//gm' < a_in
おおおおお
こここここ
そそそそそ
ととととと[たた]
あああ[いい]うう
$
$# 「行頭部分にある 1 個以上の \[[^\]*\] を削除」と初見で思ったのだが、違うのか?
$# それとも C# でどうやるかわからないという話? 申し訳ないが C# は知らない。
$
$cat a_in
[ああ]おおおおお
[いいい]こここここ
[うう][ええ]そそそそそ
ととととと[たた]
[ええ]あああ[いい]うう
$perl -pe 's/^(\[[^\]]*\])+//' < a_in
おおおおお
こここここ
そそそそそ
ととととと[たた]
あああ[いい]うう
$perl -0777 -pe 's/^(\[[^\]]*\])+//gm' < a_in
おおおおお
こここここ
そそそそそ
ととととと[たた]
あああ[いい]うう
$
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国国営メディア「沖縄は日本ではない」… ★6 [BFU★]
- 高市政権にパイプ役不在…日中高まる緊張 公明党の連立離脱影響、自民内にも懸念「自分でまいた種は自分で刈り取ってもらわないと」★2 [ぐれ★]
- 【速報】 日経平均の下落率3%超す、財政懸念で長期金利上昇 [お断り★]
- ナイツ塙が指摘のローソンコーヒーカップ、ロゴ「L」で誤解生みデザイン変更へ 在庫使い切る3か月後にリニューアル [muffin★]
- 政府、株式の配当など金融所得を高齢者の医療保険料や窓口負担に反映する方針を固めた [バイト歴50年★]
- 【速報】 高市政権、「日本版DOGE」を立ち上げ 米国で歳出削減をした「政府効率化省(DOGE)」になぞらえたもの [お断り★]
- 高市早苗「……なんて言ってみたw」中国「なんだ、言ってみただけかw」👈これで全部元通りになるという事実 [782460143]
- 【悲報】早速高市首相のせいで全国の民泊でキャンセルラッシュwwwwwwwwwwww 経営者も嘆き「こんな事は初めてだ…」😲 [871926377]
- 中国「高市が謝罪撤回しないとこれ全部なくなるけどどうする?」 [931948549]
- んなっしょい🍬禁止🈲のお🏡
- 映画「ゼルダの伝説」、リンクとゼルダ姫が白人になってしまう。日本のものは日本人だろうが!! [592058334]
- 高市早苗「株やってる奴ザマァwww格差是正のためにも、もっと暴落した方がいいよwww」(´・ω・`)確かに。 [252835186]
