RegExpMatch抽象 接口

正则表达式匹配。

正则表达式匹配是 Match 对象。它们还包含检索任何命名捕获组名称的能力,以及通过名称而不是索引检索命名捕获组匹配的能力。

示例

const pattern =
    r'^\[(?<Time>\s*((?<hour>\d+)):((?<minute>\d+))\.((?<second>\d+)))\]'
    r'\s(?<Message>\s*(.*)$)';

final regExp = RegExp(
  pattern,
  multiLine: true,
);

const multilineText = '[00:13.37] This is a first message.\n'
    '[01:15.57] This is a second message.\n';

RegExpMatch regExpMatch = regExp.firstMatch(multilineText)!;
print(regExpMatch.groupNames.join('-')); // hour-minute-second-Time-Message.
final time = regExpMatch.namedGroup('Time'); // 00:13.37
final hour = regExpMatch.namedGroup('hour'); // 00
final minute = regExpMatch.namedGroup('minute'); // 13
final second = regExpMatch.namedGroup('second'); // 37
final message =
    regExpMatch.namedGroup('Message'); // This is the first message.
final date = regExpMatch.namedGroup('Date'); // Undefined `Date`, throws.

Iterable<RegExpMatch> matches = regExp.allMatches(multilineText);
for (final m in matches) {
  print(m.namedGroup('Time'));
  print(m.namedGroup('Message'));
  // 00:13.37
  // This is the first message.
  // 01:15.57
  // This is the second message.
}
实现类型
注释
  • @Since("2.3")

属性

end int
匹配字符串中最后一个字符之后的索引。
no setterinherited
groupCount int
返回匹配中的捕获组数量。
no setterinherited
groupNames Iterable<String>
pattern 的命名捕获组名称。
no setter
hashCode int
此对象的哈希码。
no setterinherited
input String
在此匹配上计算的字符串。
no setterinherited
pattern RegExp
用于在 input 中搜索的模式。
no setteroverride
runtimeType Type
对象运行时类型的表示。
no setterinherited
start int
匹配开始的字符串中的索引。
no setterinherited

方法

group(int group) String?
给定 group 匹配的字符串。
inherited
groups(List<int> groupIndices) List<String?>
具有给定索引的组列表。
inherited
namedGroup(String name) String?
命名捕获组 name 捕获的字符串。
noSuchMethod(Invocation invocation) → dynamic
当访问不存在的方法或属性时调用。
inherited
toString() String
此对象的字符串表示。
inherited

运算符

operator ==(Object other) bool
相等运算符。
inherited
operator [](int group) String?
匹配给定 group 的字符串。
inherited