正则表达式用于识别特殊字符、单词或字符模式等文字字符串。
在 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- - |