- koara
- ベテラン
- 会議室デビュー日: 2005/09/16
- 投稿数: 96
|
投稿日時: 2007-01-26 14:46
angel様 レスありがとうございます。
引用: |
|
否定形ではない形で条件を書いてみると、
・(A,数字以外の文字).TXT で終わる場合、条件に当てはまる
・(A以外の文字)数字.TXT で終わる場合、条件に当てはまる
正規表現としては、これらを | で連結します。
|
否定形ではない形で条件を書いて|で連結するという考え方
とても参考になりました。
下のような関数を作って検証しました。
angel様、明智重蔵様 の話では "1.TXT" がマッチしないということでしたが、
MS VBScript RegExp 5.5ではマッチしてしまいました。
ということで教えて頂いた、
(^[0-9]|[^A0-9]|[^A][0-9])\\\\.TXT$
というパターンで満足いく結果を得ることが出来ました。
ありがとうございます。
引用: |
|
Private Sub TestRegExp()
'ファイル名
Dim fileName As String
fileName = "TEST.TXT" '1 true
fileName = "TESAT.TXT" '2 true
fileName = "TESA1T.TXT" '3 true
fileName = "TESTBH.TXT" '4 true
fileName = "TESTBH1.TXT" '5 true
fileName = "TESTBH10.TXT" '6 true
'
fileName = "TESTA.TXT" '7 false
fileName = "TESTA1.TXT" '8 false
fileName = "TESTA10.TXT" '9 true
fileName = "1.TXT" '10 true
fileName = "A.TXT" '11 false
fileName = "B.TXT" '12 true
Dim RetStr As String
Dim regEx As Object
Set regEx = New RegExp
'正規表現パターン
regEx.pattern = "((^[0-9]|[^A0-9]|[^A][0-9])\\\\.TXT$)"
regEx.IgnoreCase = True
regEx.Global = True
If regEx.test(fileName) Then
Debug.Print "true"
Else
Debug.Print "false"
End If
End Sub
|
ファイル名の後ろの数字はファイルの世代を表す連番です、
今後2桁になったりすることを考えると、 9の"TESTA10.TXT" はマッチさせたくありません。
・(A以外の文字)数字数字.TXTで終わる場合、条件に当てはまる
という条件を追加して考えてみたいと思います。
ありがとうございました。
|