【问题标题】:substitute words and words with hyphens用连字符替换单词和单词
【发布时间】:2017-11-04 00:07:04
【问题描述】:

我将阅读语法句子,例如

今晚。

我有一个函数可以获取句子并且应该替换任何有

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

它会很好地阅读第一句话并替换单词,我的问题是它不会替换像 这样的单词,因为连字符 我尝试更改子内容!在函数中
sentence.sub!(/()/){语法[[$1]]sample.join(' ')}
我不确定如何用 和连字符替换常规单词

【问题讨论】:

  • 你需要做一个带方括号的字符集:/(&lt;[-\w]+&gt;)/

标签: ruby regex


【解决方案1】:

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

/(\&lt;[a-zA-Z\-]+\&gt;)/

内容如下:匹配&lt; &gt; 之间的任何重复字符序列,这些字符介于a and zA and Z- 字符之间。

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

另外,请记住您输入的标签在&lt; 之后和&gt; 之前有空格,因此您也需要考虑到这一点。以下是这样做的。

/(\&lt; [a-zA-Z\-]+ \&gt;)/

干杯,

【讨论】:

  • 我觉得值得指出的是,这些模式中的字符都不需要用反斜杠转义。
  • 确实如此。一般来说,我对正则表达式有点偏执,因为你永远不知道哪个引擎会运行这个表达式哈哈
猜你喜欢
  • 2013-07-08
  • 2019-12-30
  • 1970-01-01
  • 2020-03-27
  • 2014-01-08
  • 2021-06-30
  • 1970-01-01
  • 1970-01-01
  • 2015-07-03
相关资源
最近更新 更多