Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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 用连字符替换单词和单词_Ruby_Regex - Fatal编程技术网

Ruby 用连字符替换单词和单词

Ruby 用连字符替换单词和单词,ruby,regex,Ruby,Regex,我会读语法句子,比如 今晚的 及 我有一个函数,它可以得到句子,应该替换所有的 while is_non_terminal?(sentence) sentence.sub!(/(<\w+>)/){grammar[[$1]].sample.join(' ')} end while是非终端吗?(句子) sub!(/()/){grammar[[$1]].sample.join(“”)} 结束 它会很好地阅读第一句话并替换单词,我的问题是它不会因为连字符而替换像这样的单词

我会读语法句子,比如

今晚的

我有一个函数,它可以得到句子,应该替换所有的

while is_non_terminal?(sentence)
  sentence.sub!(/(<\w+>)/){grammar[[$1]].sample.join(' ')}
end
while是非终端吗?(句子)
sub!(/()/){grammar[[$1]].sample.join(“”)}
结束
它会很好地阅读第一句话并替换单词,我的问题是它不会因为连字符而替换像这样的单词 我试着改变了潜艇的内容!在函数中设置为
sub!(/()/){grammar[[$1]]sample.join(“”)}

我不知道如何用<>和连字号替换常规单词

您可以使用以下正则表达式来匹配连字号和常规单词:

/(\)/

这意味着:匹配
之间
a和z
a和z
-
字符之间的任何重复字符序列

如果您仍在习惯正则表达式,以下网站可能会帮助您练习:

另外,请记住,您输入的标记在
之后和
之前都有空格,因此您也需要考虑到这一点。下面的代码就是这样做的

/(\<[a-zA-Z\-]+\>)/


干杯,

您需要用方括号创建一个字符集:
/()/
我觉得值得指出的是,这些模式中的字符都不需要用反斜杠转义。的确如此。一般来说,我对正则表达式有点偏执,因为你永远不知道哪个引擎会运行表达式哈哈