【发布时间】:2020-03-19 08:12:42
【问题描述】:
我想使用 Regex 而不是字符串操作函数从 s3 URL 中提取子字符串。
我的要求是从 URL s3://s3bucket/dynamodbtablename/05abd315-2e0b-4717-919d-1cc6576ebe19 中检索 dynamodbtablename/05abd315-2e0b-4717-919d-1cc6576ebe19
但是,我无法安排正则表达式来给我想要的东西。
我希望正则表达式以这种形式解析,但我知道我在正则表达式行中遗漏了一些内容。
const url = 's3://s3bucket/dynamodbtablename/05abd315-2e0b-4717-919d-1cc6576ebe19';
const patternMatches = url.match(new RegExp(s3://${s3bucket}/${dynamodbtablename}/([a-f\d-]+)));
const migrationDataFileS3Key = patternMatches[indexOfResultingArrayWithDesiredSubstring]
我能够想出下面的表达式来检索 UUID/GUID,并且必须将其与 ${s3bucket} 连接以形成 S3 存储桶密钥。但是,我对这个解决方案不满意。我需要以上内容。
const url = 's3://s3bucket/dynamodbtablename/05abd315-2e0b-4717-919d-1cc6576ebe19';
const patternMatches = url.match(/([a-f\d-]+)/g);
const migrationDataFileS3Key = massiveTableItem + '/' + patternMatches[patternMatches.length - 1];
非常感谢您的帮助。
【问题讨论】:
-
尝试
let patternMatches = url.match(new RegExp(String.raw`s3://${s3bucket}/${dynamodbtablename}/([a-fA-F\d-]+)`));,然后patternMatches[1]将保持05abd315-2e0b-4717-919d-1cc6576ebe19 -
@WiktorStribiżew,我相信这个问题是不同的,因为我希望答案采用的格式。对于大多数人来说,这个问题的答案也比其中的更简单、更容易理解您分享的帖子。我的问题也不应该被否决。
-
在您尝试回答之前,我还明确指定了我的问题。如果您在一审时已通读它,那么您当时就可以提出副本,而不是在我提出仍然给您和另一个响应者信用的答案之后。
标签: javascript regex