Ruby中的正则表达式问题

Mic*_*ert 2 ruby regex

我试图使用Ruby从字符串中提取下面的模式,我似乎没有在Ruby上走得太远......

这是我正在使用的正则表达式 \/p\/[\w-\/]*[\d+]

这是我想要提取的字符串类型.

/p/hyphenated-words/more-hyphenated-words/102049294

因此,简而言之,字符串始终以/ p /开头,以多个数字结尾,并包含一个或多个带有可能连字符的子目录.

我的正则表达式适用于一些在线表达式测试人员,但不适用于Ruby.

Mar*_*ers 5

字符类中的连字符表示字符范围.逃避它使它成为一个字面连字符.也就是说,将此更改[\w-\/][\w\-\/].

[\d+]改为\d+没有方括号.


Fai*_*Dev 5

除了@Mark Byers回答:

 /p/[\w-/]*[\d+]
Run Code Online (Sandbox Code Playgroud)

正则表达式的[\ d +]部分无关紧要.原因是它之前是一个贪婪的量词,它量化了一个反过来包含的类\w.\w翻译成[a-zA-Z0-9_]"吃掉"之后的任何挖掘物.

最后,而不是[\ d +],只需使用\ d(如果必须).