正则表达式匹配。
正则表达式匹配是 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
方法
运算符
-
operator ==(
Object other) → bool - 相等运算符。inherited
-
operator [](
int group) → String? - 匹配给定
group
的字符串。inherited