我真的很喜欢正则表达式,目前在解决问题方面遇到了一些麻烦。我将不胜感激任何帮助:)
使用ruby 2.4.2
问题:在每个点处拆分一个字符串,除非asd字在点
之后String: str = "qwer.qwer.asd"
Code: str.split(/\./)
Output: ["qwer", "qwer", "asd"]
The output should be: ["qwer", "qwer.asd"]
答案 0 :(得分:2)
使用
str.split(/\.(?!asd\b)/)
\.(?!asd\b)
模式匹配任何未跟随asd
后跟字边界的点。如果前瞻模式在当前位置的右侧立即找到匹配项,(?!asd\b)
是否定前瞻,则会使匹配失败。
如果“单词”以字符串的句点或结尾结尾,请使用
str.split(/\.(?!asd(?:\.|\z))/)
其中(?:\.|\z)
是非匹配组,匹配字符串(\.
)的点(|
)或(\z
)。
请参阅Ruby demo和regex demo。