[過去ログ] Regular Expression(正規表現) Part14 [無断転載禁止]©2ch.net (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
301: 2017/08/23(水)23:01 ID:bHZ6/xkT(1) AAS
>>300
試すといいよ
外部リンク:regex101.com
302: 2017/08/23(水)23:56 ID:v21fsY6g(1) AAS
できないね
秀丸はマイナス検索では?
303: 2017/08/24(木)22:00 ID:vZuGMV9A(1) AAS
できたよ

コピペしたときバックスラッシュが別の文字に変わっていたので、
そこだけ入力し直したけど
304: 2017/10/02(月)15:17 ID:uet6lO9o(1) AAS
二文字以上連続していない場合のみヒットする正規表現はどう書けばいいですか?
aを探すとして
"abc"のaはヒットする
"aabc"のaaは連続しているのでヒットしない
ということをしたいです
305: 2017/10/02(月)15:33 ID:MBLNVziv(1) AAS
(?<!a)a(?!a)
306: 2017/10/02(月)15:50 ID:oE42sBRL(1) AAS
aで固定って訳じゃなくて
bだけとかcだけとかも探したいのでは?
307: 2017/10/02(月)16:29 ID:rrE28i3s(1) AAS
冷静なつっこみに受けた
308: 2017/10/02(月)17:40 ID:G/SyJC6m(1/2) AAS
単に見つけるだけなら
/(.)(?!\1)(.)(?!\2)/
で出来なくもない。
しかし、見つかったときは2文字マッチするパターンなので
全部見つけたい場合はそこを考慮する必要がある。
先頭の文字は見つけられないから別途
/^(.)(?!\1)/
のようにする必要があるだろう。
言語によってはもっとうまくできるかもしれない。
でも、for 文とかで探す方がいいと思うよ。
309: 2017/10/02(月)18:33 ID:G/SyJC6m(2/2) AAS
/(.)(\1)*/
でマッチした長さが 1 だったらという考え方も出来るけど、どう?
310: 2017/10/03(火)03:04 ID:FFksRFs1(1) AAS
/^(?!.*(.)\1).*/
311
(1): 2017/10/11(水)15:02 ID:PTqhQudL(1) AAS
ユニコード文字プロパティから
特定の文字のみを除外した文字の集合を
簡単に書く方法はあるでしょうか?

例えば \p{C} からタブ(\t)と改行コード(\n|\r)のみ除外したもの
312: 2017/10/12(木)22:03 ID:iUceZ3nS(1) AAS
>>311
(?![\n\r])\p{C}
313
(1): 2017/10/14(土)07:42 ID:sv7zl76d(1/2) AAS
「"」以外の文字にマッチするが「\"」ならそれにもマッチする
ってどう書けばいいですか?
314: 2017/10/14(土)08:04 ID:Wo1S3xrN(1) AAS
>>313
([^"]|(?<=\\)")
315: 2017/10/14(土)08:38 ID:sv7zl76d(2/2) AAS
ありがとうございます
知らない記号があるので勉強します
316
(2): 2017/10/14(土)12:04 ID:SVCVJk+z(1) AAS
正規表現を再利用したくて調べたんだができないんだな
itemcode:=/(S|T|U)\d{3}-\d{4}/
/^\s*\{itemcode}\s*$/
こういう仕様あっても全然いいと思うんだが仕様策定団体がサボったのか
317: 2017/10/14(土)12:19 ID:2Glba8SI(1) AAS
言語やエディタの機能で補完すれば?
変数に正規表現リテラルを格納して後で使えるようにするのは正規表現の枠をこえてる
318: 2017/10/14(土)13:45 ID:m/q/3Rhj(1) AAS
>>316
そもそも正規表現の規格の枠外やん
Perlなら

my $itemcode = q/(S|T|U)\d{3}-\d{4}/;
my $regex = qq/^\s*{$itemcode}\s*$/;

$target =~ /$regex/;

とか出来たと思うが, $itemcodeも$regexも単に文字列だしな
319: 2017/10/14(土)20:25 ID:nyEdEfPd(1) AAS
>>316
環境によるが、pcreを使っているプログラムなら、
(?(DEFINE)(?<name>pattern)...)で定義して(?&name)で使える。つまり、
/(?(DEFINE)(?<itemcode>(S|T|U)\d{3}-\d{4}))^\s*(?&itemcode)\s*$/
320: 2017/10/15(日)12:04 ID:xFgouCR2(1) AAS
正規表現技術入門って本買ったら初心者の入門書じゃなかった…
321: 2017/10/15(日)23:07 ID:/4ZFGRZX(1) AAS
後方参照っどこが後方やねん、後方で参照してるってことか?
と思っていたのですが、
左から右へと文字列を舐めていくカーソルの立場から見て後ろ、
という意味ですね?
322: 2017/10/16(月)07:55 ID:hhyAWPuR(1) AAS
んだんだ
323: 2017/10/16(月)10:07 ID:ZoMoe7Af(1) AAS
上から下
324
(1): 2017/10/16(月)16:17 ID:BvwEZWNg(1/2) AAS
PCRE_EXTENDEDの説明に
この修飾子を設定すると、エスケープするか 文字クラスの内部を除き、
パターンの空白文字は完全に無視されます。
とありますが、
これはどういう時に使うのでしょうか?
空白文字を無視したいなら
最初からパターンに含めなければいいだけのような気がするのですが・・
325
(1): 2017/10/16(月)17:17 ID:VwEzpL/B(1) AAS
>>324
改行したりして可読性を高めたい時とか
326: 2017/10/16(月)17:31 ID:BvwEZWNg(2/2) AAS
>>325
可読性を上げるためのオプションですね
ありがとうございます
327: 2017/10/18(水)00:44 ID:HJHK1SNa(1/2) AAS
[$]

こういう文字クラスがあった場合、これは終端と解釈されますか?
それとも文字列の$と解釈されますか?

また、[\$] だった場合は挙動が変化しますか?
328: 2017/10/18(水)01:19 ID:GswCLlj6(1) AAS
試せば?
外部リンク:regex101.com
329: 2017/10/18(水)01:39 ID:HJHK1SNa(2/2) AAS
ありがとうございます
やはり文字列なんですね
330
(3): 2017/10/20(金)00:50 ID:hFePCOoH(1) AAS
過去にAutohotkeyスレで正規表現自体の質問は正規表現スレに行けとあったのでこちらで質問させて下さい(巻き添えアク禁でソフトウェア板に書き込めません)。宜しくお願いします。

●Regular Expressionの使用環境
wikiより引用
>AutoHotkeyで用意されている正規表現は、Perl 5に搭載されているものと概ね互換のPCRE(Perl Compatible Regular Expressions)である

●検索か置換か?
検索

●説明
順不同の単語群のすべてを含む文字列の最長を検索し取り出したいです

●対象データ
var := "クリスマス任意の文字列お盆任意の文字列正月任意の文字列"
省12
331
(1): 2017/10/20(金)02:08 ID:yLtxI7rs(1/2) AAS
>>330
>これらの単語群がすべて含まれる文字列全体を取り出すには

これらの単語群って、クリスマス・お盆・正月の3単語を指してるのかな?
それならダサいけど(クリスマス|お盆|正月)を3回繰り返せば?
外部リンク:regex101.com
332
(3): 2017/10/20(金)02:42 ID:GaFTw98F(1/4) AAS
>>330
その2を組み合わせればいいじゃん
/(?=.*クリスマス)(?=.*お?盆)(?=.*正月)(?:クリスマス|お?盆|正月).*(?:クリスマス|お?盆|正月)/
333
(3): 2017/10/20(金)19:27 ID:P/1hvwmS(1) AAS
2ch → 5chになったタイミングでアク禁って全解除されたと思うけど、また規制され始めたのかな?
334: 2017/10/20(金)19:58 ID:S6VTZkXa(1) AAS
は?
335: 2017/10/20(金)20:01 ID:GaFTw98F(2/4) AAS
アク禁は知らんけど、おπ規制だけは5chでは2chのを引き継いでないってことは言われてた
336
(1): 330 2017/10/20(金)20:06 ID:JiGfFRv1(1/3) AAS
>>331
すみませんでした
(クリスマス|お盆|正月)の3つの単語を全て含む文字列の最長マッチと書くべきでした
(クリスマス|お盆|正月).*?(クリスマス|お盆|正月).*?(クリスマス|お盆|正月)
では最長3単語まででお盆という単語を含まなくてもマッチしてしまいます

>>332
>その2
というのが何をさすのかすみません分かりませんでした
var := "クリスマス任意の文字列お盆任意の文字列正月任意の文字列お盆任意の文字列正月任意の文字列クリスマスzzzz盆zzzzz盆zzzzzzz盆zzzzzzzzzzzお盆"
pos := RegExMatch(var, "s)(?=.*?お?盆)(?=.*?クリスマス)(?=.*?正月)(?:お?盆|クリスマス|正月).*(?:お?盆|クリスマス|正月)", $)
省10
337: 2017/10/20(金)20:21 ID:GaFTw98F(3/4) AAS
先頭に^を付けたらダメだろ
^は文頭の位置を表す記号なんだから
338
(3): 2017/10/20(金)20:23 ID:JiGfFRv1(2/3) AAS
pos := RegExMatch(var, "s).*?((?=.*?お?盆)(?=.*?クリスマス)(?=.*?正月)(?:お?盆|クリスマス|正月).*(?:お?盆|クリスマス|正月))", $)
MsgBox, %$1%
すみませんこれで1文字目不問で取り出せました
長文失礼しました
339: 2017/10/20(金)20:27 ID:GaFTw98F(4/4) AAS
何がしたいの?
>>332で要求する最長文字列を取れるはずだけど?
マッチ全体がそうなるようにしてるんだから
それとも部分キャプチャで取りたかったんなら全体を()で括るだけでいいよ
340
(1): 2017/10/20(金)20:41 ID:JiGfFRv1(3/3) AAS
説明下手ですみません
var := "zzあzzzいzzzうzzzうzzあzzいzz"
最初に見つかる(あ|い|う)のどれかから
最後に見つかる(あ|い|う)のどれかまで
かつ(あ|い|う)すべての語が含まれる文字列を取り出したかった
アク禁じゃなくスマホ回線だからかも知れません
341: 2017/10/20(金)22:48 ID:yLtxI7rs(2/2) AAS
>>336
おおそういう事だったか
ちょっと難しいね
外部リンク:regex101.com
342
(1): 2017/10/21(土)00:17 ID:jXM7J8Fl(1/2) AAS
こういうのはどうかな

(?=.*クリスマス)(?=.*お盆)(?=.*正月)(?:クリスマス|お盆|正月).*(?:クリスマス|お盆|正月)
343
(1): 2017/10/21(土)00:21 ID:jXM7J8Fl(2/2) AAS
と思ったら>>332と全く同じやんけ・・・・
これでちゃんと途中からでも欲しい部分全部拾えるでしょ?

外部リンク:regex101.com
344
(1): 2017/10/21(土)00:33 ID:ZBz0JWdz(1/2) AAS
**クリスマス**クリスマス**正月**お盆**お盆**
だったら最初と最後の**を抜かして
クリスマス**クリスマス**正月**お盆**お盆
にマッチさせたいって話なの?

あとシングルラインモード使ってるから
複数行にわたってマッチさせたいんだよね?
↓こういうの

**クリスマス**
**クリスマス**正月**
**正月**お盆**
345: 2017/10/21(土)00:33 ID:ZBz0JWdz(2/2) AAS
アスタリスク見にくいな
346
(2): 338 2017/10/21(土)02:32 ID:o7hEIA7f(1/3) AAS
>>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より分かりやすい説明が思いつきません
347
(1): 2017/10/21(土)12:04 ID:Awu3DWjD(1) AAS
"s)(?=((お?+盆)|(クリスマス)|(正月)))(?=.*(?2))(?=.*(?3))(?=.*(?4)).*(?1)"

>>346
気持ち悪いから試してみた
"s)(?=盆)盆"→マッチする
"s)(?=.*?盆)盆"→マッチしない←?!?!
"s).(?=.*?盆)盆"→する
"s)(?=.)(?=.*?盆)盆"→する
"s)(?:)(?=.*?盆)盆"→する

s)と(?=.*の間に何かを挿めば何故か回避できそう?
"s)(?:)(?=.*?お?盆)(?=.*?クリスマス)(?=.*?正月)(?:お?盆|クリスマス|正月).*(?:お?盆|クリスマス|正月)"
348
(1): 338 2017/10/21(土)17:14 ID:o7hEIA7f(2/3) AAS
>>347
すごい!>>346のvar文字列に対しpos=4で最も理想的な形でとれました!
pos := RegExMatch(var, "s)(?=((お?+盆)|(クリスマス)|(正月)))(?=.*(?2))(?=.*(?3))(?=.*(?4)).*(?1)", $)
MsgBox,,, pos%pos% %$%, ;pos=4 $=最初のクリスマスから最後の盆

s)^(?=.*?お?盆)(?=.*?クリスマス)(?=.*?正月)
この正規表現の出所はスマホアプリ板2chmate質問スレのテンプレにあるNGワードで
2chmateのシングルラインモードは(?s:ここに正規表現)と書くようです
その辺のやりとりが過去スレ
2chスレ:applism
にありました
省15
349: 338 2017/10/21(土)17:15 ID:o7hEIA7f(3/3) AAS
s).*?((?=.*?お?盆)(?=.*?クリスマス)(?=.*?正月)(?:お?盆|クリスマス|正月).*(?:お?盆|クリスマス|正月))
AutoHotkeyシングルラインモードでは正規表現の先頭に「^」が有っても無くても先頭からマッチするので
.*?(?=.*?お?盆)(?=.*?クリスマス)(?=.*?正月) ;<----ここで先頭にマッチ(1)
(?:お?盆|クリスマス|正月) ;<----先頭に続く最初に見つかる(?:お?盆|クリスマス|正月)のどれかにマッチ(2)
.*(?:お?盆|クリスマス|正月) ;<----(2)に続く最後に見つかる(?:お?盆|クリスマス|正月)のどれかにマッチ(3)となるようです
s)と(?=.*?の間に最短0文字表現を入れないとマッチしないのはもしかしてバグなんでしょうかね
350: 2017/10/24(火)15:16 ID:5n0ye5v7(1) AAS
すみません。
自分で書いた正規表現が期待通り動いたのですが理由が分かりません。
どなたか解説お願いします。

Notepad++の置換で、こんなデータに対して

<abcde> <hijk>
<abc> <XYZ>
<dfg>

検索文字列 (?:\s*<([^<>]*)>)?\s*<([^<>]*)>
置換文字列 [$1]\t[$2]\r\n
で置換して、結果がこうなりました。
省9
351: 2017/10/24(火)15:43 ID:JVoqQJo1(1) AAS
$1と$2が存在するという前提で置換しておきながら$1は?で消えるかもと指定してるから
$1が無いパターンにマッチしたと判断された(適当)
352
(2): 2017/12/01(金)00:01 ID:J9gYbH6z(1/4) AAS
Spam Mail Killerの正規表現についてすみませんがご教示ください。

メールアドレスに同じドメインのアドレスを複数(たとえば3個以上)含む、という場合
例えばですが
abc@uvw-xyz.com, defg123@uvw-xyz.com, hi456@uvw-xyz.com
このようなアドレスをひとくくりに探し出すにはどのようにすればいいでしょうか?
##/(?=.*@uvy-xyz\.com){3,}/km
とやってみましたがうまく動きませんでした。
正規表現って難しい・・・
353
(1): 2017/12/01(金)00:27 ID:lY+8fymW(1) AAS
(.+?@uvw-xyz.com){3,}
354: [352] 2017/12/01(金)00:37 ID:J9gYbH6z(2/4) AAS
>>353
ありがとうございます。
対象アドレスが2つでも反応してしまいました(´・ω・`;)何故だー
355
(1): 2017/12/01(金)01:38 ID:4kQewCo+(1) AAS
([\w\d._-]+?@uvw-xyz\.com, ){2,}[\w\d._-]+?@uvw-xyz\.com
冗長だけど、とりあえずこれならどのアプリでも動くはず
356: 352 2017/12/01(金)03:23 ID:J9gYbH6z(3/4) AAS
>>355
ありがとうござます。ばっちりでした。
ひとまずはこれで運用してみようと思います。
357: 2017/12/01(金)14:56 ID:GNYmtVXo(1/2) AAS
([\w\d._-]+?@uvw-xyz\.com(,\s?)?){3,}
メールアドレスに注目するなら、これでもいいかな
358
(1): 2017/12/01(金)15:03 ID:GNYmtVXo(2/2) AAS
スペースのパターンも考慮すると、こちらのほうがいいかも
([\w\d._-]+?@uvw-xyz\.com(,\s*)?){3,}
359
(1): 2017/12/01(金)19:07 ID:lDYRmGG1(1) AAS
拘り始めるときりがない
複数の記述方法があるしそれで制限も変わる
外部リンク:ja.m.wikipedia.org

軽く「正規表現 メールアドレス」でググればメールアドレスを糞まじめに正規表現で頑張る意味がないのが頭の5個も読めば理解できるでしょ
依頼者がとりあえず解決したと言ってるんだからこれ以上は現状不要だよ
360
(1): 352 2017/12/01(金)23:13 ID:J9gYbH6z(4/4) AAS
みなさんありがとうございました。
書き方も拘りだしたらきりが無いというのはよくわかりました。
記述がすっきりしていて動作も問題なかったので >>358 の方法でいってみます。
361: 2017/12/02(土)07:41 ID:dQK/O/Fy(1) AAS
>>359
最初に与えられた条件の中で、単に冗長な表現をシンプルにすることは、
限界事例を前提するような拘りというのとは違うと思うけどな。
362: 2017/12/02(土)09:41 ID:mi+Z/zsa(1) AAS
>>360
横槍だけど358は最初に与えられた条件(3回出現)と違って3回“連続”出現だから留意してね
そして\wは\d_を含んでいるからまだ冗長だ、ついでに+?の?も{3,}の,もシンプルじゃないね
最初の質問の=を:にするだけでよかったと思うよ

^(?>.*?@uvy-xyz\.com){3}
363: 2017/12/02(土)10:25 ID:hDsQS9Tu(1) AAS
依頼者が充足宣言してるのにね
364: 2017/12/02(土)10:49 ID:SQFbqxvb(1) AAS
正規表現の難しいところは引き際。いろんな意味で。
365: 2017/12/02(土)20:04 ID:aLfswfyL(1) AAS
質問がメインのスレじゃないんだから、
探究することは悪いことじゃないよ。
366: 2017/12/02(土)20:22 ID:P9eUjlcX(1) AAS
なにいってんだこいつ?

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

2 質問テンプレ
367: 2017/12/02(土)20:32 ID:+fOAFawt(1) AAS
> 質問する場合は
  ̄ ̄ ̄ ̄ ̄ ̄
368: 2017/12/02(土)22:11 ID:oKFwf0E4(1) AAS
ほとんど質問がルートのレスツリーばかり
テンプレも質問がらみばかり
引き際誤るとここまで人はみっともなくなれるのか
369: 2017/12/02(土)22:44 ID:1qjImk2p(1) AAS
自己紹介乙
370: 2017/12/02(土)23:58 ID:NhirO4Ud(1) AAS
引き際重要
371: 2017/12/10(日)08:22 ID:DxswVEqC(1/2) AAS
Google Apps Scriptで、下記の時系列データを配列で取得したいのだけど、どうしたら良いですか?
外部リンク[do]:www.morningstar.co.jp
372: 2017/12/10(日)17:27 ID:UOQUQi73(1) AAS
どこまでやりましたか
373
(1): 2017/12/10(日)18:40 ID:DxswVEqC(2/2) AAS
あとは正規表現のとこだけです。

<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 ID:4q7JrCp0(1) AAS
jQuery のセレクターを使え

$('td.center').text()
375
(1): 2017/12/11(月)01:01 ID:06if4WxO(1) AAS
>>373
正規表現よりHTMLパーサ使えってのは>>373に同意するがjQueryは外部HTMLをパース/操作するものではない

外部リンク:sites.google.com
この辺参考にするのがいいんじゃない
376: 2017/12/11(月)07:53 ID:HLwn5MaC(1/2) AAS
急にHTMLパーサなんて言われてもチンプンカンプンやわ
377: 2017/12/11(月)09:34 ID:78kXJ+6a(1) AAS
すぐできるだろうと思って泥沼にハマることが多いわ、こりだすとキリがないわで、あきらめどころが難しいのが正規表現。

自分の中で制限時間(10分など。忙しさによる)を設けて、
それ以上時間がかかる場合は正規表現による解決するのをあきらめるってのが、運用上は合理的だろうね。
正規表現そのものの学習・調査をしたい場合は、もちろん違うが。
このスレの客層はどっちなのってことなのかな。
378: 2017/12/11(月)14:24 ID:HLwn5MaC(2/2) AAS
jQueryやらHTMLパーサやら能書きばっかり

正規表現で出来たから、もうええわ
379: 2017/12/12(火)00:30 ID:u8BojTW8(1) AAS
>>375
>jQueryは外部HTMLをパース/操作するものではない

なんでよ?
380: 2017/12/14(木)17:08 ID:lv6L9acp(1/2) AAS
Perl互換ですが,
ファイルの先頭から末尾までをマッチさせる,つまりファイルのテキストを全部取得するにはどう書いたらいいのでしょうか?
381: 2017/12/14(木)17:36 ID:lv6L9acp(2/2) AAS
解決しました
([\s\S]*)で出来ました.
382: 2017/12/16(土)03:31 ID:ArLhqftT(1) AAS
正規表現は構文解析器(parser)じゃないから、
XML, HTML のように、文書に構造があるものは解析できない。バグる

例えば、コメント部に、
<td
と書かれていても、正規表現では該当してしまう

それに要素間に、祖先・子孫などの関係があって、入れ子構造になるから、
開始・終了タグが一致しない
383: 2017/12/18(月)22:01 ID:fLY/8wUq(1) AAS
バックスラッシュt、でいいやろ
384: 2017/12/18(月)23:20 ID:LMSHu3dl(1) AAS
正規表現でできることできないことの見極めが難しい。
うまくできない原因が、自分の未熟によるものか、そもそも誰がやろうが無理なのか、という見極め。
これは正規表現に限った話でないが、正規表現を使っていると遭遇することが非常に多い。
385: 2017/12/18(月)23:31 ID:Xb/4cQMD(1) AAS
自分が使ってる範囲で使えるものか完璧を目指すかで違ってくるよ
386: 2017/12/25(月)17:59 ID:9hKP95Nk(1/2) AAS
もはや姓のサイトウ(斉藤、齊藤など)に適した検索方法って正規表現ぐらいじゃね?

プレス発表 「文字情報基盤整備事業」で推進していた漢字6万文字の国際規格化が完了:IPA 独立行政法人 情報処理推進機構
外部リンク[html]:www.ipa.go.jp
387: 2017/12/25(月)18:01 ID:9hKP95Nk(2/2) AAS
というか外字だとマルチプラットホーム対応した検索アルゴリズムを作ることが困難だったので、国際規格化されただけまだマシか。
388: 2017/12/25(月)22:40 ID:8yZmKHLj(1) AAS
ユニコードなので特に何かに限定されない
ZWSPやZWJなどの方が地獄
外部リンク[html]:anti.rosx.net
389: 2018/01/02(火)13:30 ID:bFwGimBi(1/2) AAS
新年おめでとうございます

スマホアプリで正規表現を使いたくて調べたレベルで恐縮です
'\s'は空白文字だそうですが半角スペースのみを表現できないでしょうか?
また'/'を用いて半角スペースを表す方法はありませんでしょうか?
宜しくお願い致します
390
(1): 2018/01/02(火)19:00 ID:I9szCE3x(1) AAS
何故その程度ググらない?
半角スペースはそのまま半角スペースだ
391: 2018/01/02(火)20:13 ID:bFwGimBi(2/2) AAS
>>390
半角文字ばかり調べて盲点でした
ありがとうございました
392
(1): 2018/01/06(土)20:03 ID:eEPcZWZO(1/3) AAS
社外に情報を持ち出せず脳内再生ですみませんが、
以下の抽出条件を教えてください

●Regular Expressionの使用環境
Excel/VBAの参照設定で5.5

C#からのソースを移植中に、
Executeメソッドで(おそらく後読みができず)エラーとなっているが、
正規表現初心者で手も足も出ず…

●検索か置換か?
検索

●説明
省11
393: 2018/01/06(土)20:08 ID:eEPcZWZO(2/3) AAS
●対象データ
△△hostname:△hogehoge.com改行
△△△△hostname:△mogemoge.com改行
△hostname:△192.168.1.1改行

のようにスペースが入っています。

Janeでカキコするとスペースが消えたので補足します。
394
(1): 2018/01/06(土)21:13 ID:RuMnMvof(1/2) AAS
ホスト名の条件が分からんからドメイン名と同等と仮定する
マルチラインモードで

^\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 ID:eEPcZWZO(3/3) AAS
>>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])
?)$
省9
396
(1): 2018/01/06(土)22:25 ID:RuMnMvof(2/2) AAS
> がIPアドレス除外ですね
違う
\Sは空白文字以外だから[^\S\x0A\x0D]は空白文字以外とCR, LFの「何れでもない」場合, つまり空白文字からCRとLFを除外したもの
そもそも(先頭が英字でなければならない)ドメイン名でマッチングしてるんだから先頭が数字で始まるIPアドレスを後から除外する必要はない

再利用性に関しても, 後読み出来るエンジンかそうでないかで既に失われてるんじゃないかね
キャプチャの取得方法なんぞ言語ごとに大分違うしな

仕事で使うなら尚更メンテし辛い上に遅い正規表現を使わにゃならん積極的理由は無い
splitでループ回せば入力のサイズに対して線型時間で終わることが保証される上に保守性も高い
397
(1): 2018/01/07(日)12:17 ID:ln22xrzP(1) AAS
>>392
ここでドメイン名文字種チェックせにゃならんの
IPアドレスではないで判断でけんの
398
(2): 2018/01/10(水)23:41 ID:qa5Jh8Cf(1) AAS
>>397
現仕様だとまさにIP除外なんだけど、123.comとかが入ってくるので、あとで除外しているという。。

>>396
今日、やっと開発場所で試しました。
ドメインは見事マッチしました!が、
△△domain:△hogehoge.com改行
の行までマッチしてしまうので、
^\s*
(?:[A-Za-z]〜
のところを
省4
399: 2018/01/11(木)10:30 ID:Xo4biI2J(1) AAS
^[△]*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:△はじめよう.みんな
400: 2018/01/11(木)12:30 ID:/99JjIqr(1/2) AAS
>>398
要件は満たしたつもりだが, その行がマッチしちゃならん理由は?
それともキャプチャの意味が分かってないのか?
1-
あと 602 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.027s