Ruby正则表达式提取{| |}之间的单词

Ruby正则表达式提取{| |}之间的单词,ruby,regex,Ruby,Regex,如何从文本中提取{}中包含的单个单词 an example of the text {Creating|Making|Producing} blah blah blah 我用有限的正则表达式知识走到了这一步 text.scan(/{([^}]*)}/) 这只给了我{Creating | make | producting},但我想CreatingMakingproducting 谢谢大家! 您可以找到匹配项 text.scan(/{([^}]*)}/)[0][0].split('|')

如何从文本中提取
{}
中包含的单个单词

an example of the text {Creating|Making|Producing} blah blah blah
我用有限的正则表达式知识走到了这一步

text.scan(/{([^}]*)}/)
这只给了我
{Creating | make | producting}
,但我想
Creating
Making
producting

谢谢大家!

您可以找到匹配项

text.scan(/{([^}]*)}/)[0][0].split('|')

更简单的正则表达式可以是:

text.scan(/{(.*?)}/)
说明:

  • {
    -一个
    {
    字符
  • *?}
    -在遇到第一个(
    }
    字符之前的任何(
    *
另一个:

s = 'an example of the text {Creating|Making|Producing} blah blah blah'
s.scan(/(?<=[|{])[A-Za-z]+(?=[}|])/)
# => ["Creating", "Making", "Producing"]

再次查看。

而不是正则表达式,只需跳过第一个和最后一个字符即可

str = "{Creating|Making|Producing}"
str[1..-2].split('|')
=> ["Creating", "Making", "Producing"]
s='文本{Creating | Making | producting}诸如此类的例子'
s、 扫描(/(?[“创建”、“制作”、“生产”]
s、 扫描(/(?[“创建”、“制作”、“生产”]

如果文本只包含两个单词,这会起作用吗?{Creating | Making}@MaxRose Collins,即使它只包含一个单词,它也会起作用。
拆分
通过分隔符拆分。如果没有,就没有要拆分的内容。如果有一个或多个,它会在找到它的任何地方拆分。如果字符串可能包含多个
{|
,你可以稍微改变一下:
“现在是所有{good}Rubyists}的{time}到了……”扫描(/{([^}]*)}/).flatte(1).映射{s | s.split('124;')}=>[[“the”,“time”,“for”],[“good”,“Rubyists”]]
。这很好,但它也会选择
{/code>和
之外的单词
如果您用
|
{
}
|
组合包围它们,但首先必须从文本中去除
str
str = "{Creating|Making|Producing}"
str[1..-2].split('|')
=> ["Creating", "Making", "Producing"]
s = 'an example of the text {Creating|Making|Producing} blah blah blah'

s.scan(/(?<={).*(?=})/).map{|i| i.split("|") }.flatten  
# => ["Creating", "Making", "Producing"]

s.scan(/(?<={).*(?=})/).first.split("|")    
# => ["Creating", "Making", "Producing"]