尝试
.split正则表达式
(?<=[^.a-zA-Zd])|(?=[^.a-zA-Zd])
它将在非字母数字字符或句点之前或之后的任何位置分割字符串。
(?<=[^.a-zA-Zd])
是一个积极的眼光。如果前面的字符串匹配包含在中的子正则表达式,则它匹配两个字符之间的位置(?<=...)
。[^.a-zA-Zd]
是否定的角色类。它与中不包含的 单个字符 匹配[^...]
。.
匹配字符.
。a-z
匹配a
和之间的任何小写字符z
。A-Z
是一样的,只是大写。d
是的等效项[0-9]
,因此它匹配任何数字。
|
是一个“或”等效。它使正则表达式与正则表达式的前一半或后一半匹配。(?=[^.a-zA-Zd])
与regex的前半部分相同,不同之处在于它是正向的。如果 以下 字符串与中包含的子正则表达式匹配,则它匹配两个字符之间的位置(?=...)
。
您可以像这样在Java中实现此正则表达式:
String str = "sin(4+3)-8";String[] parts = str.split("(?<=[^\.a-zA-Z\d])|(?=[^\.a-zA-Z\d])");结果:
["sin","(" 4,"+",3,")","-","8"]


