規則表示式

什麼是規則表示式?

規則表示式提供識別文字字串的方法,例如特定字元、字詞或字元樣式。使用 Model Review 時,有一些更常見的用法,包括遵循命名慣例,或是針對十分明確的資訊排序專案模型中的註解。

特殊字元

規則表示式使用特殊字元為定義配對提供更多彈性。特殊字元包括:

+ * ? . [ ] ^ ( ) | \

下列各部分說明如何使用每個特殊字元:

句點

句點 (「.」)將與任字元相符。

表示式

含義

相符

不相符

390-.

符合字串「390-」後接任何字元。

390-A, 390-1, 390--

390-A1, 1390-1

Revision .Released

符合字串「REVISION」後接任何字元,然後再接字串「Released」

Revision A Released

Revision 1 Released

Revision # Released

Revision A1 Released

RevisionAReleased

方括弧

方括弧 (「[ ]」) 定義「字元類別」,其符合括弧內字元的任何「單一字元」。在括弧中,除了「^」之外所有特殊字元都將失去其原意,當使用「^」作為括弧中的第一個字元時,其表示「不」符合指定的字元。

此外,在方括弧內可使用範圍。

表示式

含義

相符

不相符

[akm]

字元:a、k 或 m。

A、K、M

Akm、ak、G

[a-z]

任何字母

A、b、c、d

1、2、-、#

[^akm]

只要不是 a、k 或 m 的字元。

C、f、G

Am (因為它是兩個字元)

A、k、m

[0-9]

任何數字

0、4、7

A、#、z

[a-z][a-z]

任何兩個字母

AB、BC、DE

A (僅一個字母)

A1

12

星號

星號 (「*」) 後接表示式,表示前面的表示式可以出現「零或多次」

表示式

含義

相符

不相符

Ab*c

「A」後接零個或多個 b,再以 C 結尾。

Ac

Abc

Abbbbbbbc

Bbb

Abcd

[a-z]*

任一數目的任何字母 (即僅限字母 &endash; 也包括零個字母)

A

Bob

AAAAA

Steel

<空白> (因為 * 可表示零個字母)

STEEL230

12

AA-##

加號

加號 (「+」) 後接表示式,表示前面的表示式可以出現「一或多次」

表示式

含義

相符

不相符

Ab+c

「A」後接一個或多個 b,再以 C 結尾。

Abc

Abbbbbbbc

Ac

Bbb

Abcd

[a-z]+

任一數目的任何字母 (即僅有字母)

Bob

AAAAA

Steel

STEEL230

12

AA-##

<blank>

問號

問號 (「?」)後接表示式,表示前面的表示式為可選。

表示式

含義

相符

不相符

Ab?c

「A」後接可選的「b」,再以 C 結尾。

Ac

Abc

Abbc

Abcd

390-[a-z][a-z]?

「390-」後接字母,再接第二個可選字母。

390-A

390-AB

390-11

390-

390-ABC

直立線

直立線 (「|」) 字元在兩個表示式之間用做 OR (通常以括號括住)。

表示式

含義

相符

不相符

(390|241)-[a-z]+

「390」或「241」後接「-」,再接一個或多個字母。

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-」後接「a」、「b」或「c」或「1」、「2」或「3」。

390-A

390-3

390-F

390-

用於隱匿特殊字元的反斜線

如果必須確實符合「特殊字元」的字元,特殊字元前面的反斜線可告知 Model Review 該字元應依其字面解讀 (而非作為特殊字元解讀)。

表示式

含義

相符

不相符

[0-9]\+

數字後接「+」。

1+

2+

1

A

1+1

What\?

「What」後接問號。

What?

What's Up?

開頭/結尾

Model Review 中的常見工作是以特定值作為「開頭」或「結尾」。此語法對以往常用「搜尋」型式規則表示式的人而言有一個相異之處。建議的方法是在表示式前端或後端使用「.*」或「.+」,指示開頭或結尾。

表示式

含義

相符

不相符

390-.*

以「390-」開頭 (以任何字元結尾 &endash; 包括空格)。

390-1

390-111

1390-1

390-.+

以「390-」開頭 (以任何字元結尾,但必須至少有一個字元)。

390-1

390-111

1390-1

390-

.*-[a-z]

以「-」和一個字元結尾 (以任何字元開頭 &endash; 包括空格)。

Revision-A

Rev-A

-A

Revision-A1

Rev-1

123

-1

.+-[a-z]

以「-」和一個字母結尾 (以任何字元開頭,但必須至少有一個字元)。

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 後接「-」,至少有一個字元的英數區段,再接「-」和至少一個數字。

390-mypart-1

231-bracket-99

120-mypart-1

380- -