regex 在正则表达式中获取匹配后的单词

bhmjp9jg  于 2023-04-22  发布在  其他
关注(0)|答案(1)|浏览(131)

我想在一个单词后使用正则表达式得到两个特定的单词
所以我有以下文字

code: 'dev-foo-1', text: foo, bla:, blabla, ..., tokenId: '1234566343434', accountId: '123456789',...

我想从这个文本只有代码dev-foo-1和帐户ID 123456789,但我有问题,选择这两个。
我试着做一些

code:'\([a-z]{3})([a-z]+)([0-9])'\accountId: \'([0-9])'

这是不对的

6yt4nkrj

6yt4nkrj1#

(Note我在你的代码中忽略了反斜杠,因为它们的应用似乎不一致-如果你使用单引号字符串来分隔你的模式,你需要在每个单引号之前添加斜杠)
如果code总是出现在accountId之前,那么你就很接近答案了。你在code和代码之间缺少了一个空格,以及代码部分之间的破折号:

code: '([a-z]{3}-[a-z]+-[0-9])'

然后在accountId之前可以有任何字符,所以你需要.*来匹配它们。实际上,你可以使用.*?来成为non-greedy
最后,您的accountId当前只匹配一个数字,但您可能希望将一个 * 或多个 * 与[0-9]+匹配:

code: '([a-z]{3}-[a-z]+-[0-9])'.*?accountId: '([0-9]+)'

我们就结束了

相关问题