Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 具有黑名单值的Ruby正则表达式_Ruby On Rails_Ruby_Regex - Fatal编程技术网

Ruby on rails 具有黑名单值的Ruby正则表达式

Ruby on rails 具有黑名单值的Ruby正则表达式,ruby-on-rails,ruby,regex,Ruby On Rails,Ruby,Regex,假设我们有以下字符串: form-group checkbox-group group for-group 如何使用Ruby将所有出现的组替换为团队。限制是我想要一个不应该被替换的模式黑名单 因此,对于black\u list=['checkbox-group','form group']我希望实现以下转换字符串: form-group checkbox-group team for-team 您知道如何开始吗?如果您正在寻找仅限正则表达式的解决方案(假设黑名单仅为前缀) "form-gro

假设我们有以下字符串:

form-group checkbox-group group for-group
如何使用Ruby将所有出现的
替换为
团队
。限制是我想要一个不应该被替换的模式黑名单

因此,对于
black\u list=['checkbox-group','form group']
我希望实现以下转换字符串:

form-group checkbox-group team for-team

您知道如何开始吗?

如果您正在寻找仅限正则表达式的解决方案(假设黑名单仅为前缀)

"form-group checkbox-group group for-group"
.gsub(/(#{Regexp.union(black_list)})|group/){$1 || "team"}
# => "form-group checkbox-group team for-team"
s='form group checkbox group for group'
s、 gsub/(?)?

如果您正在寻找仅限正则表达式的解决方案(假设黑名单仅为前缀)

s='form group checkbox group for group'
s、 gsub/(?)?

另一个问题是OP显示了数组
黑名单
,但您没有显示如何将其转换为您所拥有的。另一个问题是OP显示了数组
黑名单
,但您没有显示如何将其转换为您所拥有的。您能告诉我们这一点吗?我在摸索这一块时遇到了困难。我知道了我以前从未见过gsub这样使用。正则表达式有其他选项。第一个选项有第一个捕获,第二个选项没有捕获。在块中,
$1
表示第一个捕获,或者
nil
表示没有捕获。啊,我错过了捕获!这是一个很好的方法。你能带我们看一下吗?我在搜索块时遇到困难。我以前没有见过像这样使用gsub。正则表达式有其他选项。第一个选项有第一个捕获,第二个选项没有捕获。在块中,
$1
指的是第一个捕获,或者
nil
如果没有的话。啊,我错过了捕获!这是一个很好的方法这样做。
s = 'form-group checkbox-group group for-group'
s.gsub /(?<!checkbox-|form-)group/, 'team'