2016-03-03 18 views
1

我在球衣下面的正則表達式,即工作:正則表達式新澤西REST服務

/artist_{artistUID: [1-9][0-9]*} 

但是,如果我做

/{artistUID: [artist_][1-9][0-9]*} 

不,我不明白是怎麼正則表達式是正在構建,並沒有找到任何好的文檔。我想要做的是這樣的:

/{artistUID: ([uartist_]|[artist_])[1-9][0-9]*} 

認識到像「artist_123」和「uartist_123」並將其存儲在artistUID值。

+1

我覺得你在這裏濫用字符類('[']匹配1個單個字符)。試試'/ {artistUID:(uartist | artist)_ [1-9] [0-9] *}'。 –

+0

不要忘了,你總是可以選擇將你的單個端點分成兩個:/ artistUID/{uartist_ [1-9] [0-9] *}'和'/ artistUID/{artist_ [1-9] [0-9] *}'爲了簡化您的問題 –

+0

Thanks @ wiktor-stribiżew,'/ {artistUID:(uartist | artist)_ [1-9] [0-9] *}'部分工作就像它應該= )如果你重新發布答案,我會接受它。 – Simons0n

回答

1

可以使用交替組(...|...))而非characrter類[...](即在其內部所定義單個字符相匹配)。

使用

/{artistUID: (uartist|artist)_[1-9][0-9]*} 

或者把它縮短,使用?量詞u後,使其可選:

/{artistUID: u?artist_[1-9][0-9]*} 

regex demo