C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: 正規表現(RegEx)について質問です。


(過去ログ 81 を表示中)

[トピック内 10 記事 (1 - 10 表示)]  << 0 >>

■47796 / inTopicNo.1)  正規表現(RegEx)について質問です。
  
□投稿者/ シーマ (1回)-(2010/03/15(Mon) 14:23:41)

分類:[VB.NET/VB2005 以降] 

こんにちは。
VB2008で正規表現(RegEx)を勉強しているのですが、以下の条件にマッチするためのパターンをどのように書けばよいか分かりません。

1.アルファベット[A-Za-z]がひとつ以上続き、それに続けて数字[0-9]がひとつ以上続くもの
2.ただし、上記のアルファベットの部分が"ABC"の場合は除外する(ABCを含む文字、例えばABCDEであれば除外しない)

1.の条件だけであれば、パターンは"[A-Za-z]+\d+"でよいと思うのですが、2の除外条件を入れる場合はどのように書けばよいでしょうか?
よろしくお願いいたします。
引用返信 編集キー/
■47801 / inTopicNo.2)  Re[1]: 正規表現(RegEx)について質問です。
□投稿者/ aetos (250回)-(2010/03/15(Mon) 16:43:15)
No47796 (シーマ さん) に返信
> こんにちは。
> VB2008で正規表現(RegEx)を勉強しているのですが、以下の条件にマッチするためのパターンをどのように書けばよいか分かりません。
>
> 1.アルファベット[A-Za-z]がひとつ以上続き、それに続けて数字[0-9]がひとつ以上続くもの
> 2.ただし、上記のアルファベットの部分が"ABC"の場合は除外する(ABCを含む文字、例えばABCDEであれば除外しない)
>
> 1.の条件だけであれば、パターンは"[A-Za-z]+\d+"でよいと思うのですが、2の除外条件を入れる場合はどのように書けばよいでしょうか?
> よろしくお願いいたします。

[a-zA-Z]+(?<!ABC)\d+

でどうだろう。
引用返信 編集キー/
■47802 / inTopicNo.3)  Re[2]: 正規表現(RegEx)について質問です。
□投稿者/ aetos (251回)-(2010/03/15(Mon) 16:44:47)
No47801 (aetos さん) に返信

あ、たとえば「XXABC123」にはマッチするの?
これが OK な場合は↑の答えじゃダメだな。
引用返信 編集キー/
■47821 / inTopicNo.4)  Re[3]: 正規表現(RegEx)について質問です。
□投稿者/ シーマ (2回)-(2010/03/16(Tue) 09:32:48)
No47802 (aetos さん) に返信
> あ、たとえば「XXABC123」にはマッチするの?
> これが OK な場合は↑の答えじゃダメだな。

aetos さん、ご回答ありがとうございます。
確かに、「XXABC123」にはマッチさせたいです。
ところで、提示頂いた正規表現の(?<!ABC)の部分の"?<!"はどのような意味があるのでしょうか?
"!"は否定だと思うのですが、"<"にどのような効果があるのか理解しておりません。
あと、"?"がどこに作用しているのか、根本的なことを理解していません。
ご解説頂けますでしょうか?よろしくお願いいたします。
引用返信 編集キー/
■47822 / inTopicNo.5)  Re[4]: 正規表現(RegEx)について質問です。
□投稿者/ よねKEN (444回)-(2010/03/16(Tue) 09:52:14)
2010/03/16(Tue) 09:52:46 編集(投稿者)

> ところで、提示頂いた正規表現の(?<!ABC)の部分の"?<!"はどのような意味があるのでしょうか?
> "!"は否定だと思うのですが、"<"にどのような効果があるのか理解しておりません。
> あと、"?"がどこに作用しているのか、根本的なことを理解していません。
> ご解説頂けますでしょうか?よろしくお願いいたします。

「.NET Framework の正規表現」
http://msdn.microsoft.com/ja-jp/library/hs600312(VS.80).aspx
こちらのURL以下に必要な情報がありますので、.NETの正規表現でわからないことがあれば、
逐一確認されることをお勧めします。さらに以下のように辿っていくと今回のキーワードに辿りつけます。

→「正規表現言語要素」http://msdn.microsoft.com/ja-jp/library/az24scfc.aspx
 →「グループ化構成体」http://msdn.microsoft.com/ja-jp/library/bs2twtah.aspx

「グループ化構成体」のページに「?<!」について記載があります。
「該当位置のすぐ左に"ABC"が現れないこと」という条件を正規表現に付加しています。

もし、正規表現一つで表現しなければならない、という制約がないのなら、
マッチ条件と除外条件の2つの正規表現にわけて管理すると扱いが楽になります。
(マッチ条件に一致し、除外条件に一致しない)
引用返信 編集キー/
■47823 / inTopicNo.6)  Re[4]: 正規表現(RegEx)について質問です。
□投稿者/ みきぬ (823回)-(2010/03/16(Tue) 09:55:04)
> 確かに、「XXABC123」にはマッチさせたいです。

であれば、[a-zA-Z]+(?<!^ABC)\d+ でいけるかしら。

# ABCABC123 にはマッチしていいんだよね?
引用返信 編集キー/
■47824 / inTopicNo.7)  Re[5]: 正規表現(RegEx)について質問です。
□投稿者/ aetos (253回)-(2010/03/16(Tue) 10:03:25)
No47823 (みきぬ さん) に返信
>>確かに、「XXABC123」にはマッチさせたいです。
>
> であれば、[a-zA-Z]+(?<!^ABC)\d+ でいけるかしら。
>
> # ABCABC123 にはマッチしていいんだよね?

あ、なるほどー。
引用返信 編集キー/
■47827 / inTopicNo.8)  Re[6]: 正規表現(RegEx)について質問です。
□投稿者/ シーマ (3回)-(2010/03/16(Tue) 10:20:45)
よねKEN さん、みきぬ さん、ご回答ありがとうございます。
色々と勉強してみようと思います。
みなさん、ありがとうございました。
解決済み
引用返信 編集キー/
■47836 / inTopicNo.9)  Re[7]: 正規表現(RegEx)について質問です。
□投稿者/ みきぬ (824回)-(2010/03/16(Tue) 11:33:09)
あ、そういえば

^[a-zA-Z]+(?<!^ABC)\d+$

ってしないと "123aaa123" とか "aaa123aaa" が引っかかっちゃうね。
指摘するまでもないかもしれないので、解決済みは維持しておこう…。
解決済み
引用返信 編集キー/
■47867 / inTopicNo.10)  Re[1]: 正規表現(RegEx)について質問です。
□投稿者/ 明智重蔵 (1回)-(2010/03/16(Tue) 20:10:59)
入れ子な否定戻り読みを使ってみました。

正規表現
[A-Za-z]+(?<!(?<![A-Za-z])ABC)[0-9]+

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -