我想像这样分割一个字符串:
my_string = "I want to split this (these should stay together) correctly"
结果如下:
["I", "want", "to", "split", "this", "(these should stay together)", "correctly"]
我试过这个:
my_string.split(/(?=[^\(]){1,} (?=[^\)]){1,}/)
但是圆括号内的元素被分开了。我怎样才能做到这一点?
最佳答案
split
在这里是错误的工具。使用扫描
。
my_string.scan(/\([^)]*\)|\S+/)
# => ["I", "want", "to", "split", "this", "(these should stay together)", "correctly"]
如果平衡括号可以与其他非空格字符相邻,您希望将它们放在一起,那么您可能需要这个,它更通用:
my_string.scan(/(?:\([^)]*\)|\S)+/)
通常,当分隔符可以用简单的模式表示时,使用split
。当内容可以用简单的模式表达时,使用scan
。
关于ruby - 我可以使用什么正则表达式将字符串拆分为单词,但将短语放在圆括号中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35273247/