使用正则表达式分隔符分割文本并保留分隔符

3
我正在尝试使用分隔符将字符串拆分为数组,同时保留分隔符。 我有的字符串是:"2+37/4+26"。我希望数组是:[2,+,37,/,4,+,26]

这个回答解决了你的问题吗?如何分割字符串并保留分隔符? - outis
1个回答

3

您可以使用正向/反向预查来进行拆分:

String[] tok = input.split("(?<=[+*/-])|(?=[+*/-])");

RegEx Demo

Explanation:

(?<=[+*/-])  # when preceding character is one of 4 arithmetic operators
|            # regex alternation
(?=[+*/-])   # when following character is one of 4 arithmetic operators

1
我希望你能解释一下,这样我就可以从你的精彩答案中学到东西。 - Kick Buttowski
1
我在答案中添加了解释,还请查看演示链接和regex101上的详细正则表达式描述。 - anubhava
如果字符串中还有括号怎么办?我尝试转义括号/方括号,但是出现了错误。 - th3r1singking
1
“parenthesis” 从未出现在你的问题中,所以我甚至不知道要求是什么,但可能可以使用:String[] tok = input.split("(?<=[()+*/-])|(?=[()+*/-])"); - anubhava
<= 表示前面的,= 表示后面的,对吧? - Kick Buttowski
1
是的,(?<=...) 是正向后查找,而 (?=...) 是正向前查找。 - anubhava

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接