【问题标题】:Scala - Regex for uncertain repetitive patternScala - 不确定重复模式的正则表达式
【发布时间】:2016-05-17 18:39:01
【问题描述】:

在 Scala 中,我有一个字符串输入,例如

1. [[Country].[US]-[Country].[Canada]]
2. [[Country].[US]-[Country].[Canada]-[Country].[Mexico]]
3. [[Country].[US].[New York]-[Country].[US].[California]]

我需要为上面的字符串提取以下内容

1. [Country].[US], [Country].[Canada]
2. [Country].[US], [Country].[Canada], [Country].[Mexico]
3. [Country].[US].[New York], [Country].[US].[California]

它们是随机的,用 - (连字符)分隔。

我需要一个可以匹配组的正则表达式。我可以让它适用于静态模式,但不知道如何适应动态模式。

我不能用连字符分割它,因为可以有另一个包含负整数的输入,比如

 [Rank].[-1]-[Rank].[1]-[Rank].[10] 

【问题讨论】:

    标签: regex scala


    【解决方案1】:

    你可以简单地去掉第一个和最后一个字符,然后用"-"分割:

    def extractTokens(text: String) = text.drop(1).dropRight(1).split("-")
    
    > extractTokens("[[Country].[US]-[Country].[Canada]]")
    > Array([Country].[US], [Country].[Canada])
    
    > extractTokens("[[Country].[US]-[Country].[Canada]-[Country].[Mexico]]")
    > Array([Country].[US], [Country].[Canada], [Country].[Mexico])
    

    【讨论】:

    • 谢谢琼。但是,我的输入可能包含 -ve 数字(已编辑)。另外,我很好奇正则表达式如何用于动态值。
    猜你喜欢
    • 2019-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-16
    • 2016-01-11
    相关资源
    最近更新 更多