分组、捕获

分组

使用(表达式)对表达式进行分组,例如使用(\d{3}\.){2}匹配下面例子中的数字:

  1. abc123.456.def

\d{3}表示三个数字,(\d{3}\.)表示三个数字加“.”为一组,{2}表示这一组内容重复两次

捕获

在对表达式进行分组的时候,会捕获文本到自动命名的组里,使用 \1 \2 …… 后向引用组

例如用([a-z]*)\ (\d*)匹配下列文本,([a-z]*)\1组,(\d*)\2

  1. kardinal 1234567

使用\2\ \1替换([a-z]*)\ (\d*),可以改变两个字符串的顺序

  1. 1234567 kardinal

如果分组较多,计数可能会不太方便,可以给分组指定名称,例如:

  1. (?<name>[a-z]*)\ (?<num>\d*)
  2. \k<num>\ \k<name> (?#使用“\k<name>”后向引用)

使用(?:表达式),则只是分组,而不捕获,下面例子中,(\d*)\1

  1. (?:[a-z]*)\ (\d*)