如何在 Chapel 中使用正则表达式提取子字符串?
How do extract a substring using regular expressions in Chapel?
我知道 Chapel 有 Regexp Library 但我不知道如何使用捕获组。有人可以举个例子吗?
var template = "/home/user/:ID/details";
var uid = someKindaExtractyThing("/home/user/17/details");
writeln("So YOU are user ", uid, ", huh?")
> So YOU are user 17, huh?
这是我的目标。
这个问题已经链接到文档,所以真正剩下要做的就是展示一个代码示例。
use Regexp;
var input = "/home/user/17/details";
var capture:string;
var r = compile("""/home/user/(\w+)/details""");
var match = r.match(input, capture);
if match.matched then
writeln(capture);
else
writeln("not a match!");
“””业务现在只能与 master 或 Chapel 1.17 或更高版本一起使用(否则您必须在常规 "string" 中使用“\”转义“\”)。Regexp module documentation 有更多关于可以在正则表达式中输入的内容的详细信息。
如果您有多个捕获组,您将使用更多参数来搜索以获取它们。 search 在字符串中查找模式,但 match 坚持认为整个字符串都匹配该模式。
这是一个包含 2 个捕获组的示例:
use Regexp;
var input = "/home/user/17/details";
var part1:string;
var part2:string;
var r = compile("""/home/user/(\w+)/(\w+)""");
var match = r.match(input, part1, part2);
if match.matched then
writeln( (part1,part2) );
else
writeln("not a match!");
我知道 Chapel 有 Regexp Library 但我不知道如何使用捕获组。有人可以举个例子吗?
var template = "/home/user/:ID/details";
var uid = someKindaExtractyThing("/home/user/17/details");
writeln("So YOU are user ", uid, ", huh?")
> So YOU are user 17, huh?
这是我的目标。
这个问题已经链接到文档,所以真正剩下要做的就是展示一个代码示例。
use Regexp;
var input = "/home/user/17/details";
var capture:string;
var r = compile("""/home/user/(\w+)/details""");
var match = r.match(input, capture);
if match.matched then
writeln(capture);
else
writeln("not a match!");
“””业务现在只能与 master 或 Chapel 1.17 或更高版本一起使用(否则您必须在常规 "string" 中使用“\”转义“\”)。Regexp module documentation 有更多关于可以在正则表达式中输入的内容的详细信息。
如果您有多个捕获组,您将使用更多参数来搜索以获取它们。 search 在字符串中查找模式,但 match 坚持认为整个字符串都匹配该模式。
这是一个包含 2 个捕获组的示例:
use Regexp;
var input = "/home/user/17/details";
var part1:string;
var part2:string;
var r = compile("""/home/user/(\w+)/(\w+)""");
var match = r.match(input, part1, part2);
if match.matched then
writeln( (part1,part2) );
else
writeln("not a match!");