nginx正则表达式匹配多个可能性并将其连接到一个组中

huangapple go评论80阅读模式
英文:

nginx regex match with multiple possibility and concat in one group

问题

这是我的nginx正则表达式位置。

  1. location ~ "^/live/midrate/v1/rates/((?:[A-Z]{6})-(?:SPT|ON|W[1-3]|M(?:[1-9][0-9]?)|Y[2-5])-(?:[DO])-(?:[ON]))$"

请求URI是

  1. live/midrate/v1/rates/GBPUSD-SPT-D-O

结果是

  1. 找到匹配 捕获组 1: GBPUSD-SPT-D-O 2: 3: 4: 5: 6:

首先,我想要只有一个捕获组,而不是现在的多个空组,并且我需要支持逗号分隔的相同模式。

  1. live/midrate/v1/rates/GBPUSD-SPT-D-O,EURUSD-M1-D-O,EURGP-SPT-O-O

响应应该是

  1. 找到匹配 捕获组 1: GBPUSD-SPT-D-O,EURUSD-M1-D-O,EURGBP-SPT-O-O
英文:

This is my regex location for nginx.

  1. location ~ "^/live/midrate/v1/rates/((?:[A-Z]{6})-(?:SPT|ON|W[1-3]|M(?:[1-9][0-9]?)|Y[2-5])-(?:[DO])-(?:[ON]))$"

The request URI is

  1. live/midrate/v1/rates/GBPUSD-SPT-D-O

and result is

  1. Match found Capture Groups 1: GBPUSD-SPT-D-O 2: 3: 4: 5: 6:

firstly I want to have 1 group instead of multiple groups which are empty now and I need to support comma-separated with same pattern.

  1. live/midrate/v1/rates/GBPUSD-SPT-D-O,EURUSD-M1-D-O,EURGP-SPT-O-O

and the response should be

  1. Match found Capture Groups 1: GBPUSD-SPT-D-O,EURUSD-M1-D-O,EURGBP-SPT-O-O

答案1

得分: 0

  1. 捕获逗号分隔的模式序列的一般规则是

(pat(?:,pat)*)

  1. 其中`pat`是单个迭代的模式。
  2. 所以在你的情况下,它会是:

^/live/midrate/v1/rates/((?:[A-Z]{6})-(?:SPT|ON|W[1-3]|M(?:[1-9][0-9]?)|Y[2-5])-(?:[DO])-(?:[ON])(?:,(?:[A-Z]{6})-(?:SPT|ON|W[1-3]|M(?:[1-9][0-9]?)|Y[2-5])-(?:[DO])-(?:[ON]))*)$

  1. [演示链接][1]
英文:

The general rule for capturing a comma-delimited sequence of a pattern is

  1. (pat(?:,pat)*)

where pat is the pattern for a single iteration.

So in your case it would be:

  1. ^/live/midrate/v1/rates/((?:[A-Z]{6})-(?:SPT|ON|W[1-3]|M(?:[1-9][0-9]?)|Y[2-5])-(?:[DO])-(?:[ON])(?:,(?:[A-Z]{6})-(?:SPT|ON|W[1-3]|M(?:[1-9][0-9]?)|Y[2-5])-(?:[DO])-(?:[ON]))*)$

DEMO

答案2

得分: 0

我也尝试了这个,并且它有效。

  1. ^/live/midrate/v1/rates/((?:([A-Z]{6})-(SPT|ON|TN|W[1-3]|M[1-9][0-9]?|Y[2-5])-([DO])-([ON]),?){1,})$

演示

英文:

I tried this one as well and it works.

  1. ^/live/midrate/v1/rates/((?:([A-Z]{6})-(SPT|ON|TN|W[1-3]|M[1-9][0-9]?|Y[2-5])-([DO])-([ON]),?){1,})$

DEMO

huangapple
  • 本文由 发表于 2023年5月25日 23:13:24
  • 转载请务必保留本文链接:https://go.coder-hub.com/76333846.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定