Ruby中的正则表达式问题

时间:2011-11-15 13:20:47

标签: ruby regex

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

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

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

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

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

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

3 个答案:

答案 0 :(得分:5)

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

如果没有方括号,请将[\d+]更改为\d+

答案 1 :(得分:5)

除了@Mark Byers回答:

 /p/[\w-/]*[\d+]

正则表达式的[\ d +]部分无关紧要。原因是它之前是一个贪婪的量词,它量化了一个类,而这个类又包含\w\w转换为[a-zA-Z0-9_],它将“吃掉”之后的任何挖掘。

最后代替[\ d +]只需使用\ d(如果必须)。

答案 2 :(得分:0)

你需要在ruby中包含正斜杠。
因此,您的正则表达式应该类似于\/\p\/\,这与/p/完全匹配 以上帖子将帮助您完成其余部分