我有一个正常的表达,我需要弄清楚

时间:2016-09-12 01:03:53

标签: ruby regex expression

"peter,nick,jake,jack"

我需要这样的东西。

我不能在这个词之后有任何空格,例如, "peter,," "peter," "peter,,nick "都不正确。

它必须只是一个单词,例如"peter"或单词后跟逗号然后单词("peter,nick"

1 个答案:

答案 0 :(得分:1)

首先确认该字符串具有所需的结构。

r = /
    \A                # match the beginning of the string
    [[:alpha:]]+      # match > 0 letters
    (?:,[[:alpha:]]+) # match a comma then > 0 letters in a non-capture group
    *                 # match the preceding non-capture group >= 0 times
    \z                # match end of the string
    /x                # free-spacing regex definition mode

str = "peter,nick,jake,jack"

str =~ r #=> 0

由于它与正则表达式匹配,只需在逗号上拆分以返回单词数组。

str.split(',') #=> ["peter", "nick", "jake", "jack"] 

相比之下:

"peter,nick,,jake,jack" =~ r #=> nil
"peter,nick,jake, jack" =~ r #=> nil
"peter,nick,jake,jack " =~ r #=> nil
"peter ispeter,nick"    =~ r #=> nil

我认为字符串必须至少包含一个字母。