Visual Studioの使い方ファイル操作編5

プログラム学習

c#の正規表現を使って該当するフォルダを読み込むまた、適当でないフォルダは読み込まない。

メディアファイルの置き場所は、普通はC:UsersUserNamePicturesや、C:UsersUserNameVideosなどのスペシャルフォルダですから、c#の正規表現を使ってアクセスを制限したいと思います。先ずカレントディレクトリ「.」と、親ディレクトリ「..」は、ビューに読み込まない、先頭がUsersにマッチしたら読み込む、としてみます。最近は、起動ドライブはSSDでメディアファイルを起動ドライブに余り置かないとは思いますがノートパソコンの様にドライブが一つしかない場合もありますので。
「.」はC#では、改行文字(n)以外の任意の一文字にマッチすると言う意味なので、前に¥を付けて意味をキャンセルして「^.」として先頭のピリオドにマッチするとして(^は文字列の先頭を表す)次の「..」は「^.」のマッチパターンに含まれるので、
System.Text.RegularExpressions名前空間を使って
System.Text.RegularExpressions.Regex.IsMatch((“文字列”, “マッチさせたいパターン”);
マッチすれば、トゥルーを返す。
System.Text.RegularExpressions.MatchCollection match (マッチした文字列のリスト)=
 System.Text.RegularExpressions.Regex.Matches(“文字列”, “マッチさせたいパターン”);
 System.Text.RegularExpressions.Regex.IsMatch(“文字列”, “^.”);
にマッチしたらlistviewに表示しない。
 System.Text.RegularExpressions.Regex.IsMatch(“文字列”, “^Users”);
先頭の文字列がUsersにマッチしたらlistviewに表示する。
string username = Environment.UserName;ユーザーネームを取得する。
 System.Text.RegularExpressions.Regex.IsMatch(folder, “Public|”+username)
folderの名前がパブリック又は、ユーザーネームならば、listviewに表示する。

C#の正規表現 メタ文字一覧
ある1文字を表す文字(アトム)
.(ピリオド)
改行文字(n)以外の任意の一文字。(ただし [] 内ではピリオド文字。)
「.」
「」内に任意の1文字がある箇所にマッチ
s
空白文字。改行文字、タブ文字、半角/全角スペース文字など。[fnrtvx85p{Z}]と同じ。
(ちなみに S は s 以外の文字を表す。)
d
0から9までの数字。全角を含む。p{Nd}と同じ。
(ちなみに D は d 以外の文字を表す。)
w
単語に使用される文字。アルファベット、数字、アンダーバー(_)、ひらがな、カタカナ、漢字など。[p{Ll}p{Lu}p{Lt}p{Lo}p{Nd}p{Pc}p{Lm}]と同じ。
(ちなみに W は w 以外の文字を表す。)
r
キャリッジリターン。u000Dと同じ。
rn
Windows の改行文字(CRLF)にマッチ
n
ラインフィード(改行文字)。u000Aと同じ。
rn
Windows の改行文字(CRLF)にマッチ
t
タブ。u0009と同じ。
nt
改行文字(n)の後にタブが続く箇所にマッチ
\
文字の前に を付けると、その文字。メタ文字の機能を無効にするときに使う。(ある文字列内のメタ文字をすべて でエスケープするには、Regex.Escapeメソッドを使うとよい。)
[ ]
[]内のどれか1文字。[abc]ならば、aかbかc。
[^ ]
[^]内の文字以外の1文字。[^abc]ならば、aかbかc以外の文字。
[ – ]
連続した文字範囲の1文字。[0-9]ならば、数字1文字。[a-zA-Z]ならば、アルファベット1文字。
u0000
4桁の16進数で表されるUnicode文字。
[uFF61-uFF9F]
半角カナ文字の1文字にマッチ(詳細)
x00
2桁の16進数で表されるASCII文字。
[x20-x7F]
半角英数記号文字(0x20~0x7F)の1文字にマッチ
文字列内の位置を表す文字
^
文字列の先頭。
^d
先頭にある数字1文字にマッチ
$
文字列の末尾。ただし、文字列の末尾が n の時は、その前と一致。(末尾が n でも末尾で一致させるには、z を使う。)
d$
末尾にある数字1文字にマッチ
b
単語の境界(w と W の間)と一致。(ただし [] 内ではバックスペース文字。)
(ちなみに B は b 以外の境界を表す。)
文字の繰り返しを表す文字(量指定子)
*
直前の文字が0回以上繰り返す。
<[^>]*>
<>で囲まれた箇所にマッチ
+
直前の文字が1回以上繰り返す。
<[^>]+>
<>内に1文字以上ある箇所にマッチ
?
直前の文字が0回または1回繰り返す。
{n,m}
直前の文字がn回以上m回以下繰り返す。
{n}
直前の文字がn回繰り返す。
{n,}
直前の文字がn回以上繰り返す。

*?
最短マッチで、0回以上の繰り返し。? は *、+、?、{} の後につけて最短マッチを表すことができる。
選択、グループ化などを表す文字
|
| で区切られた文字列のいずれか(論理和)。
( )
グループ化する箇所。
(一郎|二郎)
一郎 または 二郎 にマッチ
(?<name> )
グループに名前(あるいは番号)を付ける。(ちなみに、< > の代わりに ‘ で括ることもできる。)
(?: )
キャプチャしないグループ。
山田(?:一郎|二郎)
山田一郎 または 山田二郎 にマッチするが、一郎 または 二郎 をキャプチャしない
(?= )
直後にこのパターンが現れることを確認する(ゼロ幅の肯定的先読みアサーション)。
d+(?=%)
後ろに % が続く数字の連続にマッチ。ただし、% はマッチした箇所に含まれないし、グループとしてキャプチャもされない。
(?! )
直後にこのパターンが現れないことを確認する(ゼロ幅の否定的先読みアサーション)。
d+(?!%)
後ろに % が来ない数字の連続にマッチ。
(?<= )
直前にこのパターンが現れることを確認する(ゼロ幅の肯定的後読みアサーション)。
(?<=\)d+
に続く数字の連続にマッチ。ただし、 はマッチした箇所に含まれないし、グループとしてキャプチャもされない。
(?<! )
直前にこのパターンが現れないことを確認する(ゼロ幅の否定的後読みアサーション)。
(?<!\)d+
前に がない数字の連続にマッチ。

コメント

タイトルとURLをコピーしました