用连字符替换单词和单词

时间:2017-11-04 00:07:05

标签: ruby regex

我将阅读像

这样的语法句子

<开始> <对象> <动词>今晚。

<开始> <展览> <冲突> <逃跑> <结论>

<展览> <坏人> <疯狂计划>

我有一个获得句子的函数,应该替换任何有<单词>

while is_non_terminal?(sentence)
  sentence.sub!(/(<\w+>)/){grammar[[$1]].sample.join(' ')}
end

它会读第一句话并且替换单词,我的问题是它不会替换像&lt;坏人&gt;因为连字符 我试过更改子内容!在功能中 sentence.sub!(/(&lt; \ w-&gt;)/){grammar [[$ 1]] sample.join('')}
我不知道如何用&lt; &GT;和带连字符的单词

1 个答案:

答案 0 :(得分:2)

您可以使用以下正则表达式匹配带连字符和常用字词:

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

这是:匹配<>a and z字符之间A and Z -之间任何重复的字符序列。

如果您仍习惯正则表达式,以下网站可以帮助您练习:https://regex101.com/

另外,请注意,您输入的代码在<之后和>之前都有空格,因此您也需要考虑这一点。以下是这样做的。

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

干杯,