Ruby Regex保留所需字符串,并删除其他字符串
在Ruby中,如果包含的字符串中存在一个所需的字符串,那么哪个正则表达式将去掉除该字符串以外的所有字符串?我知道字符的/[^abc]/,但是字符串呢 假设我有字符串group=4&type_id[]=2&type_id[]=7&saved=1,并且希望保留模式组=\d(如果它仅使用正则表达式出现在字符串中) 当前,我正在对&进行拆分,然后对生成的可枚举集合执行条件为~/group=\d/的选择。它工作正常,但我想知道正则表达式,以便更直接地执行此操作。您可以尝试:Ruby Regex保留所需字符串,并删除其他字符串,ruby,regex,regex-negation,Ruby,Regex,Regex Negation,在Ruby中,如果包含的字符串中存在一个所需的字符串,那么哪个正则表达式将去掉除该字符串以外的所有字符串?我知道字符的/[^abc]/,但是字符串呢 假设我有字符串group=4&type_id[]=2&type_id[]=7&saved=1,并且希望保留模式组=\d(如果它仅使用正则表达式出现在字符串中) 当前,我正在对&进行拆分,然后对生成的可枚举集合执行条件为~/group=\d/的选择。它工作正常,但我想知道正则表达式,以便更直接地执行此操作。您可以尝试: $str =~ s/.*(gr
$str =~ s/.*(group=\d+).*/\1/;
您可以尝试:
$str =~ s/.*(group=\d+).*/\1/;
通常我不会太担心复杂的正则表达式。只需将字符串分解为更小的部分,它就会变得更容易:
asdf = "group=4&type_ids[]=2&type_ids[]=7&saved=1"
asdf.split('&').select{ |q| q['group'] } # => ["group=4"]
否则,您可以通过多种不同的方式使用regex。我倾向于使用以下两种方法:
asdf.scan(/group=\d+/) # => ["group=4"]
asdf[/(group=\d+)/, 1] # => "group=4"
通常我不会太担心复杂的正则表达式。只需将字符串分解为更小的部分,它就会变得更容易:
asdf = "group=4&type_ids[]=2&type_ids[]=7&saved=1"
asdf.split('&').select{ |q| q['group'] } # => ["group=4"]
否则,您可以通过多种不同的方式使用regex。我倾向于使用以下两种方法:
asdf.scan(/group=\d+/) # => ["group=4"]
asdf[/(group=\d+)/, 1] # => "group=4"
尝试:
尝试:
简单地说:
part=str[/group=\d+/]
如果只需要数字,则:
组\u str=str[/group=\d+/,1]
如果只希望数字为整数,则:
组\u num=str[/group=\d+/,1]。到\u i
警告:如果没有匹配,字符串[]将返回nil,并且盲目调用nil.to_i始终返回0。简单地说:
part=str[/group=\d+/]
如果只需要数字,则:
组\u str=str[/group=\d+/,1]
如果只希望数字为整数,则:
组\u num=str[/group=\d+/,1]。到\u i
警告:如果没有匹配,字符串[]将返回nil,并且盲目调用nil.to_i始终返回0。因为Ruby的正则表达式不包含的换行符。这仅适用于单行字符串。此外,您似乎包含了某种sed语法而不是Ruby。我会投你反对票,但我今天要出去,因为Ruby的正则表达式不包括newline for。这仅适用于单行字符串。此外,您似乎包含了某种sed语法而不是Ruby。我会投你反对票,但我今天要出去。