说我有绳子str = "ASimpleNoSpaceTitle"
。我似乎无法全神贯注于如何使用正则表达式来拆分和提取所有大写的单词,以便获得["A", "Simple", "No", "Space", "Title"]
。
什么是正则表达式可以完成这项工作?
更新:带有或不带有空格/大写字母的单词字符串怎么办?像"ASimpleNoSpaceTitle and a subtitle"
到["A", "Simple", "No", "Space", "Title", "and", "a", "subtitle"]
使用String#scan
带有字符类范围会得到你想要的东西用一个简单的,易于理解的正则表达式:
str = "ASimpleNoSpaceTitle"
str.scan(/[A-Z][a-z]*/) # => ["A", "Simple", "No", "Space", "Title"]
您可以使用POSIX括号表达式[[:upper:]]
和[[:lower:]]
,这将使您的正则表达式也可以处理非ASCII字母,例如À或ç:
str = "ÀSimpleNoSpaçeTitle"
str.scan(/[A-Z][a-z]*/) # => ["Simple", "No", "Spa", "Title"]
str.scan(/[[:upper:]][[:lower:]]*/) # => ["À", "Simple", "No", "Spaçe", "Title"]
要允许单词以小写字母开头而不是其他字母开头,可以使用以下变体形式:
str = "ASimpleNoSpaceTitle and a subtitle"
str.scan(/[A-Za-z][a-z]*/) # => ["A", "Simple", "No", "Space", "Title", "and", "a", "subtitle"]
# OR
str.scan(/[[:alpha:]][[:lower:]]*/)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句