Ruby Regex保留所需字符串,并删除其他字符串

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

在Ruby中,如果包含的字符串中存在一个所需的字符串,那么哪个正则表达式将去掉除该字符串以外的所有字符串?我知道字符的/[^abc]/,但是字符串呢

假设我有字符串group=4&type_id[]=2&type_id[]=7&saved=1,并且希望保留模式组=\d(如果它仅使用正则表达式出现在字符串中)

当前,我正在对&进行拆分,然后对生成的可枚举集合执行条件为~/group=\d/的选择。它工作正常,但我想知道正则表达式,以便更直接地执行此操作。

您可以尝试:

$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。我会投你反对票,但我今天要出去。