我正在尝试使用Ruby从字符串中提取下面的模式,我似乎没有在Ruby上走得太远......
以下是我正在使用的正则表达式\/p\/[\w-\/]*[\d+]
这是我想要提取的字符串类型。
/p/hyphenated-words/more-hyphenated-words/102049294
因此,简而言之,字符串始终以/ p /开头,将以多个数字结尾,并包含一个或多个带有可能连字符的子目录。
我的正则表达式适用于某些在线表达式测试人员,但不适用于Ruby。
答案 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/
完全匹配
以上帖子将帮助您完成其余部分