Ruby on rails Ruby中的Regex不起作用
我有一个字符串,我想从中提取某个部分: 原始字符串:Ruby on rails Ruby中的Regex不起作用,ruby-on-rails,ruby,regex,Ruby On Rails,Ruby,Regex,我有一个字符串,我想从中提取某个部分: 原始字符串:/abc/d7_t/g-12/jkl/m-n3/pqr/stu/vwx 所需结果:/abc/d7_t/g-12/jkl/ 整个字符串中的字符数可能不同。它有字母、数字、下划线和连字符。我想基本上在第五个“/”之后剪断绳子 我尝试了一些正则表达式,但似乎格式有一些错误。将除“/”以外的任何字符序列匹配4次:- (\/[^\/]+){4}\/ 匹配除“/”以外的任何字符序列4次:- (\/[^\/]+){4}\/ 如果非regexp方法是可接受
/abc/d7_t/g-12/jkl/m-n3/pqr/stu/vwx
所需结果:/abc/d7_t/g-12/jkl/
整个字符串中的字符数可能不同。它有字母、数字、下划线和连字符。我想基本上在第五个“/”之后剪断绳子
我尝试了一些正则表达式,但似乎格式有一些错误。将除“/”以外的任何字符序列匹配4次:-
(\/[^\/]+){4}\/
匹配除“/”以外的任何字符序列4次:-
(\/[^\/]+){4}\/
如果非regexp方法是可接受的,那么以下方法如何:
s.split('/').take(n).join('/')+'/'
其中s
如果您的字符串(在您的情况下:/abc/d7_t/g-12/jkl/m-n3/pqr/stu/vwx
)
然后
应该有用。没有regexp那么紧凑,但有些人可能会发现它更清晰。如果非regexp方法是可以接受的,那么这个方法如何:
s.split('/').take(n).join('/')+'/'
其中s
如果您的字符串(在您的情况下:/abc/d7_t/g-12/jkl/m-n3/pqr/stu/vwx
)
然后
应该有用。没有regexp那么紧凑,但有些人可能会发现它更清晰。regexp应该是:
%r(/(?:[^/]+/){4})
。请注意,在这种情况下,最好使用%r文本版本以避免转义斜杠。未切换的斜杠可能是格式错误的原因。正则表达式可能是:%r(/(?:[^/]+/){4})
。请注意,在这种情况下,最好使用%r文本版本以避免转义斜杠。未替换的斜杠很可能是格式错误的原因。是您的朋友吗?那么您希望应用什么规则?是否总是在pqr之前进行切割?还是在第6个/
实例之后?还是第16个字符?还是第四位?什么澄清这一点,您就可以走到一半了……我做了类似的事情:(/[wW]/[wW]/[wW]/[wW]/[wW]/[wW]/)……我不确定如何找到“/”,而且w&w也不包括我的字符串中多次出现的符号“-”places@Jean-弗朗索瓦·科贝特:字符的数量可能会有所不同。我想在第5个“/”之后剪切字符串,为什么不用/
拆分它,并用/
连接前5个部分?你是你的朋友吗?那么你想用什么规则呢?是否总是在pqr之前进行切割?还是在第6个/
实例之后?还是第16个字符?还是第四位?什么澄清这一点,您就可以走到一半了……我做了类似的事情:(/[wW]/[wW]/[wW]/[wW]/[wW]/[wW]/)……我不确定如何找到“/”,而且w&w也不包括我的字符串中多次出现的符号“-”places@Jean-弗朗索瓦·科贝特:字符的数量可能会有所不同。我想在第5个“/”之后剪切字符串,为什么不用/
拆分它,并用/
连接前5个部分?请注意我的评论。这是他想要的第六个斜杠(他忘了把第一个也算在内)。在我看来像是5个斜杠。我只是重复计算。另外,在我发布之前,我检查了我在irb中的结果和他想要的结果。哇,我的错,我测试的原始正则表达式中一定有错误。--请注意我的评论。这是他想要的第六个斜杠(他忘了把第一个也算在内)。在我看来像是5个斜杠。我只是重复计算。另外,在我发布之前,我检查了我在irb中的结果和他想要的结果。哇,我的错,我测试的原始正则表达式中一定有错误。--如果你讨厌正则表达式,那没关系——明确表示非正则表达式解决方案也是可以接受的将是有用的(人们,包括我自己,都喜欢找到一个正则表达式解决方案的补丁,目标是在正则表达式中实现;-))如果你讨厌正则表达式,那没关系——明确表示非正则表达式解决方案也是可以接受的将是有用的(人们,包括我自己,都喜欢找到解决方案的regexp补丁,目的是在regexps中实现;-)