Ruby 使用正则表达式拒绝数组中的项的语法

Ruby 使用正则表达式拒绝数组中的项的语法,ruby,regex,regex-negation,Ruby,Regex,Regex Negation,我的阵列中有以下功能: my_arr.delete_if{|x| x=~/achievement\..*?/} 它删除数组中与模式匹配的所有字符串。。是否有类似的一行程序来做相反的操作,只接受包含成就的字符串。好的,更好的解决方案肯定是使用keep\u if OP询问是否有办法 仅接受包含成就的字符串 是的,同样不是最好的方法,但是你可以使用消极的前瞻:?!经验: 另一种选择是,如果仍然使用delete_,则使用not equals匹配运算符,谢谢@Cary: my_arr.delete_if

我的阵列中有以下功能:

my_arr.delete_if{|x| x=~/achievement\..*?/}

它删除数组中与模式匹配的所有字符串。。是否有类似的一行程序来做相反的操作,只接受包含成就的字符串。

好的,更好的解决方案肯定是使用keep\u if

OP询问是否有办法

仅接受包含成就的字符串

是的,同样不是最好的方法,但是你可以使用消极的前瞻:?!经验:

另一种选择是,如果仍然使用delete_,则使用not equals匹配运算符,谢谢@Cary:

my_arr.delete_if{|x| x!~/achievement\..*?/}

再次感谢@Cary指出,在任何人的代码中都找不到这种令人愉快的逻辑,所以使用keep_if

好的,更好的解决方案肯定是使用keep_if

OP询问是否有办法

仅接受包含成就的字符串

是的,同样不是最好的方法,但是你可以使用消极的前瞻:?!经验:

另一种选择是,如果仍然使用delete_,则使用not equals匹配运算符,谢谢@Cary:

my_arr.delete_if{|x| x!~/achievement\..*?/}
再次感谢@Cary指出,在任何人的代码中都找不到这种令人愉快的逻辑,所以如果需要,请使用keep_

my_arr.keep_if{|x| x=~/achievement\..*?/}
如果需要,请使用而不是删除

my_arr.keep_if{|x| x=~/achievement\..*?/}

不需要修改正则表达式,如果需要,可以使用Arraykeep_


不需要修改正则表达式,如果需要,可以使用Arraykeep_


为什么您更喜欢它而不是简单的x!~/成就\…*?/?@CarySwoveland啊,我在想它的语法,谢谢!事实上,我并不是在暗示,如果一个条件不成立,那么删除是因为如果同样的条件成立,头发的呼吸就会停止。这与建议拒绝相同,当已经提出选择时,它不会添加任何内容。至于看看,我不明白为什么会这么想。为什么你更喜欢X?成就\…*?/?@CarySwoveland啊,我在想它的语法,谢谢!事实上,我并不是在暗示,如果一个条件不成立,那么删除是因为如果同样的条件成立,头发的呼吸就会停止。这与建议拒绝相同,当已经提出选择时,它不会添加任何内容。至于观察,我不明白为什么会这么想。迟了7秒。你正在失去它,余。甚至间距也是一样的。你和“罗伯特”的思想融为一体了吗?除此之外,我更喜欢你的解决方案。迟到7秒。你正在失去它,余。甚至间距也是一样的。你和“罗伯特”的思想融为一体了吗?除此之外,我更喜欢你的解决方案。很好,比@Yu想出的好得多。很好,比@Yu想出的好得多。在你的搜索中没有任何东西需要使用正则表达式,而且它会减慢你的代码。改用x['Achasition.],因为子字符串搜索比未编排的正则表达式快。@TinMan,这只是一个例子。我有几十个,其中大多数都需要正则表达式,虽然你是正确的,但这一个不需要。在你的搜索中没有任何东西需要使用正则表达式,而且,它会减慢你的代码。改用x['Achasition.],因为子字符串搜索比未编排的正则表达式快。@TinMan,这只是一个例子。我有几十个,其中大多数都需要正则表达式,虽然你是对的,但这一个不需要。