ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
通过使用分组,特定信息可以被从一个匹配的字符串中提取。如果 match() 返回 true,我们可以使用 matched(X) 方法过的分组,X是正则表达似乎模式定义的分组的号码: ~~~ class Main { static function main() { var str = "Nicolas is 26 years old"; var r = ~/([A-Za-z]+) is ([0-9]+) years old/; r.match(str); trace(r.matched(1)); // "Nicolas" trace(r.matched(2)); // "26" } } ~~~ 注意,分组号从1开始,r.matched(0) 总是返回整个匹配的子串。 r.matchedPos() 返回这个子串在原字符串中的位置: ~~~ class Main { static function main() { var str = "abcdeeeeefghi"; var r = ~/e+/; r.match(str); trace(r.matched(0)); // "eeeee" // { pos : 4, len : 5 } trace(r.matchedPos()); } } ~~~ 另外,r.matchedLeft() 和 r.matchedRight() 可以用来获得匹配的子串左侧或者右侧的子串: ~~~ class Main { static function main() { var r = ~/b/; r.match("abc"); trace(r.matchedLeft()); // a trace(r.matched(0)); // b trace(r.matchedRight()); // c } } ~~~