- PR -

正規表現

1
投稿者投稿内容
hei
ベテラン
会議室デビュー日: 2006/09/07
投稿数: 78
投稿日時: 2006-11-13 11:16
10進数が含まれている場合は、初めて出てくる連続した10進数までにマッチし、
含まれていない場合は全ての文字列にマッチする
正規表現はどのように書けばいいのでしょうか?

Dim rx As New Regex("\w+\d+")
として

Debug.Print(rx.Match("あいうえお123かきくけこ").Value)
では「あいうえお123」がマッチしますが、

Debug.Print(rx.Match("あいうえお").Value)
では「あいうえお」を取得したいのにマッチしません。


パターンを「\w+\d*」に変えると
下の例では「あいうえお」が取得できますが、
上の例では余分な「かきくけこ」までもマッチしてしまいます。

始めに示したパターン
Dim rx As New Regex("\w+\d+")
で、
Dim m as Match=rx.Match(value)
if m.Success then’マッチしたときのみ値を変更する
value=m.value
end if
のように分岐処理すればできるのですが、
正規表現だけでできる方法はないかと思いました。

よろしくお願いします。

明智重蔵
大ベテラン
会議室デビュー日: 2005/09/05
投稿数: 127
投稿日時: 2006-11-13 11:44
^[^0-9]*[0-9]*


[ メッセージ編集済み 編集者: 明智重蔵 編集日時 2006-11-13 12:05 ]
hei
ベテラン
会議室デビュー日: 2006/09/07
投稿数: 78
投稿日時: 2006-11-13 17:14
明智さん、できました。

日本語環境の「\d」は全角の数字もマッチするようで少し迷いましたが、
とても参考になりました。
ありがとうございました。
1

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