在每个点处拆分字符串,除非显示某个单词

时间:2018-05-02 14:57:12

标签: arrays ruby regex split

我真的很喜欢正则表达式,目前在解决问题方面遇到了一些麻烦。我将不胜感激任何帮助:)

使用ruby 2.4.2

问题:在每个点处拆分一个字符串,除非asd字在点

之后
String: str = "qwer.qwer.asd"
Code: str.split(/\./)
Output: ["qwer", "qwer", "asd"]

The output should be: ["qwer", "qwer.asd"]

1 个答案:

答案 0 :(得分:2)

使用

str.split(/\.(?!asd\b)/)

\.(?!asd\b)模式匹配任何未跟随asd后跟字边界的点。如果前瞻模式在当前位置的右侧立即找到匹配项,(?!asd\b)否定前瞻,则会使匹配失败。

如果“单词”以字符串的句点或结尾结尾,请使用

str.split(/\.(?!asd(?:\.|\z))/)

其中(?:\.|\z)是非匹配组,匹配字符串(\.)的点(|)或(\z)。

请参阅Ruby demoregex demo