正規表現とは、特定の文字や単語、または文字のパターンを含む文字列を識別する方法です。
Model Review では、命名規則に合わせたり、特定の情報を見つけるためにプロジェクトモデル内の注釈を並べ替えるのに、正規表現がよく使用されます。
正規表現では、より柔軟に一致を定義するために、特殊文字を使用します。「特殊文字」には以下の文字があります。
+ * ? . [ ] ^ ( ) | ¥
以下のセクションで、各特殊文字の使用方法について説明します。
ピリオド(".")は、任意の 1 文字と一致します。
表現 |
意味 |
一致する例 |
一致しない例 |
390-. |
文字列 "390-" に任意の 1 文字が続く場合に一致します。 |
390-A, 390-1, 390-- |
390-A1, 1390-1 |
Revision . Released |
文字列 "Revision " に任意の 1 文字が続き、さらに文字列 " Released" が続く場合に一致します。 |
Revision A Released Revision 1 Released Revision # Released |
Revision A1 Released RevisionAReleased |
角括弧("[ ]")では、文字クラスを定義します。文字列クラスを指定すると、角括弧内に指定した文字と一致する任意の 1 文字を検索します。角括弧の中では、すべての特殊文字は、その意味を持たなくなります。ただし、例外は "^" が角括弧の中の最初の文字として使用された場合で、指定した文字と一致しないことを表します。
また、角括弧の中では範囲を使用することもできます。
表現 |
意味 |
一致する例 |
一致しない例 |
[akm] |
1 つの文字。a、k、m のいずれか。 |
a、k、m |
Akm、ak、G |
[a-z] |
任意の英文字 |
A、b、c、d |
1、2、-、# |
[^akm] |
a、k、m 以外の 1 文字 |
C、f、G、 Am (2 文字であるため) |
A、k、m |
[0-9] |
任意の数字 |
0, 4, 7 |
A、#、z |
[a-z][a-z] |
任意の 2 つの英文字 |
AB、BC、DE |
A (1 文字だけ) A1 12 |
アスタリスク("*")に表現を続けると、直前の表現が 0 回以上適用されることを意味します。
表現 |
意味 |
一致する例 |
一致しない例 |
Ab*c |
"A" に 0 個以上の b が続き、C で終わります。 |
Ac Abc Abbbbbbbc |
Bbb Abcd |
[a-z]* |
任意の英文字を何個でも(つまり、0 個以上の英文字のみ) |
A Bob AAAAA 鉄鋼 <空白>(* では 0 個の文字も表せるため) |
STEEL230 12 AA-## |
プラス記号("+")に表現を続けると、直前の表現が 1 回以上適用されることを意味します。
表現 |
意味 |
一致する例 |
一致しない例 |
Ab+c |
"A" に 1 個以上の b が続き、C で終わります。 |
Abc Abbbbbbbc |
Ac Bbb Abcd |
[a-z]+ |
任意の英文字を何個でも(つまり、英文字のみ) |
Bob AAAAA 鉄鋼 |
STEEL230 12 AA-## <空白> |
疑問符("?") に表現を続けると、直前の表現が省略可能であるという意味になります。
表現 |
意味 |
一致する例 |
一致しない例 |
Ab?c |
"A" に省略可能な "b" が 1 個続き、C で終わります。 |
Ac Abc |
Abbc Abcd |
390-[a-z][a-z]? |
"390-" に英文字が 1 個続き、2 個目の英文字は省略可能となります。 |
390-A 390-AB |
390-11 390- 390-ABC |
パイプ("|")文字では、2 つの表現に OR (または)を設定します(通常は括弧で囲みます)。
表現 |
意味 |
一致する例 |
一致しない例 |
(390|241)-[a-z]+ |
"390" または "241" のいずれかに 1 個の "-" と 1 個以上の英文字が続きます。 |
390-A 241-A 241-AB |
200-A 241 241- |
As per (MS2377|CS123) |
"As per " に "MS2377" または "CS123" のいずれかが続きます。 |
As per MS2377 As per CS123 |
As per As per MS3222
|
390-([abc]|[123]) |
"390-" に 1 個の "a"、"b"、"c" のいずれかか、OR(または) 1 個の "1"、"2"、"3" のいずれかが続きます。 |
390-A 390-3 |
390-F 390- |
「特殊文字」と呼ばれる文字に対する一致を正確に指定するには、特殊文字の直前にバックスラッシュを指定すると、Model Review によって、その文字は特殊文字としてではなく、その文字のとおりに解釈されます。
表現 |
意味 |
一致する例 |
一致しない例 |
[0-9]¥+ |
1 個の数字に "+" が続く文字列 |
1+ 2+ |
1 A 1+1 |
What¥? |
"What" に疑問符が続く文字列 |
What? |
What's Up? |
Model Review で共通する作業は、特定の値「で始まる」または特定の値「で終わる」ことです。この構文は、「検索」スタイルの正規表現と異なり、違う構文として認識する必要があります。推奨される方法は、".*" または ".+" を表現の直前、または直後で使用し、「で始まる」、または「で終わる」を示すという方法です。
表現 |
意味 |
一致する例 |
一致しない例 |
390-.* |
"390-" で始まります(空白を含む任意の文字で終わります)。 |
390-1 390-111 |
1390-1 |
390-.+ |
"390-" で始まります(任意の文字で終わりますが、最低 1 文字必要です)。 |
390-1 390-111 |
1390-1 390- |
.*-[a-z] |
1 個の "-" と 1 個の英文字で終わります(空白を含むあらゆる文字で始まります)。 |
Revision-A Rev-A -A |
Revision-A1 Rev-1 123 -1 |
.+-[a-z] |
1 個の "-" と 1 個の英文字で終わります(任意の文字で始まりますが、最低 1 文字必要です)。 |
Revision-A Rev-A |
Revsion-A1 Rev-1 123 -1 -A |
正規表現は一致する文字を探すのに使用できる強力な手法ですが、多少複雑です。より複雑な要件に対応するために、複数の表現の組み合わせに熟知して、複雑な表現を指定しなければならない場合もあります。
以下に、複雑な表現の例をいくつか示します。
表現 |
意味 |
一致する例 |
一致しない例 |
[0-9]+[-]?[0-9]+ |
真ん中に省略可能なダッシュを指定した数字 |
123-45 12345 |
12A32 1232-A A |
.*[^_] |
アンダースコア(_)で終わることができない場合 |
123324 PART1 |
12343_ |
(390|231)-[a-z0-9]+-[0-9]+ |
390 または 231 のいずれかに、1 個の "-"、最低 1 個の英数字を指定した部分が続き、さらに 1 個の "-" と最低 1 個の数字が続く場合 |
390-mypart-1 231-bracket-99 |
120-mypart-1 380- - |