我将阅读像
这样的语法句子<开始> <对象> <动词>今晚。
和
<开始> <展览> <冲突> <逃跑> <结论>
<展览> <坏人> <疯狂计划>
我有一个获得句子的函数,应该替换任何有<单词>
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;和带连字符的单词
答案 0 :(得分:2)
您可以使用以下正则表达式匹配带连字符和常用字词:
/(\<[a-zA-Z\-]+\>)/
。
这是:匹配<
,>
或a and z
字符之间A and Z
-
之间任何重复的字符序列。
如果您仍习惯正则表达式,以下网站可以帮助您练习:https://regex101.com/
另外,请注意,您输入的代码在<
之后和>
之前都有空格,因此您也需要考虑这一点。以下是这样做的。
/(\< [a-zA-Z\-]+ \>)/
。
干杯,