- PR -

正規表現 否定の先読み?

1
投稿者投稿内容
hei
ベテラン
会議室デビュー日: 2006/09/07
投稿数: 78
投稿日時: 2006-12-19 19:25
カッコ【】で囲まれた部分を取得したいのですが、
カッコの中が全て全角の算用数字〜*の時はマッチしない、
という正規表現が分かりません。

【A12】【123A45】などはマッチさせたいが、
【12345】【1〜3*5】などはさせたくない、ということです。


Dim text As String = "【123A45】"
Dim pattern As String = "【(?![\d〜*]+)\w+】"
Dim m As Match = Regex.Match(text, pattern)
MessageBox.Show(m.Success.ToString)

などとしてみたのですが、これではFalseになってしまいます。
(【A123】など、一文字目に算用数字〜*以外が来た時だけはTrueになりますが)

ご教授よろしくお願いします。


[ メッセージ編集済み 編集者: hei 編集日時 2006-12-19 19:29 ]

[ メッセージ編集済み 編集者: hei 編集日時 2006-12-19 19:35 ]
よこけん
大ベテラン
会議室デビュー日: 2006/01/31
投稿数: 216
投稿日時: 2006-12-19 20:14
「全角の算用数字、〜、*」ではない文字が一つ以上含まれるということですね。
つまり、「全角の算用数字、〜、*」ではない文字の前後に、0個以上の任意の文字が存在するということになりますので、以下のようにすればOKだと思います。
【.*[^0-9〜*].*】

# "全角の"算用数字ですよね?

# 読みづらかったのと抜けてる所があったので一部編集

[ メッセージ編集済み 編集者: よこけん 編集日時 2006-12-19 20:20 ]
よこけん
大ベテラン
会議室デビュー日: 2006/01/31
投稿数: 216
投稿日時: 2006-12-19 20:26
すみません、正規表現を一部下記間違えていました。

【.*[^0-9〜*].*】

ではなく、

【.*[^0-9〜*].*】

でした。 ( 全角*と半角*の書き間違えです^^; )
hei
ベテラン
会議室デビュー日: 2006/09/07
投稿数: 78
投稿日時: 2006-12-19 22:36
できました!
考え方もとても参考になりました。

ありがとうございました!
1

スキルアップ/キャリアアップ(JOB@IT)