正则表达式

正则表达式用于识别特殊字符、单词或字符模式等文字字符串。  

Model Review 中,正则表达式更常用于遵循命名约定,或者对项目模型内的注释进行分类整理,以获得非常具体的信息。

特殊字符

正则表达式利用特殊字符来提高匹配项定义的灵活性。 “特殊字符”包括:

+ * ? . [ ] ^ ( ) | \

以下几部分介绍每种特殊字符的用法:

句点

句点(“.”) 将匹配任意一个字符。

表达式

含义

匹配

不匹配

390-.

匹配字符串“390-”后跟任一字符的字符串。

390-A, 390-1, 390--

390-A1, 1390-1

Revision . 已释放

匹配字符串“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]*

任意个任意字母(即只有字母 – 但包括零个字母)

A

Bob

AAAAA

<空>(因为 * 可以指示出现零次)

STEEL230

12

AA-##

加号

加号(“+”)跟在一个表达式的后面,指明前面的表达式可以出现一次或多次

表达式

含义

匹配

不匹配

Ab+c

“A”后面跟有一个或多个 b,最后以 C 结尾。

Abc

Abbbbbbbc

Ac

Bbb

Abcd

[a-z]+

任意个任意字母(即只有字母)

Bob

AAAAA

STEEL230

12

AA-##

<空>

问号

问号(“?”) 跟在一个表达式的后面,指明前面的表达式是可选的。

表达式

含义

匹配

不匹配

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-”开头(以任何字符结尾 – 包括空格)。

390-1

390-111

1390-1

390-.+

以“390-”开头(以任何字符结尾,但必须至少有一个字符)。

390-1

390-111

1390-1

390-

.*-[a-z]

以“-”和一个字母结尾(以任何字符开头 – 包括空格)。

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- -