在java中如何使用条件拆分字符串
我试图仅在某些情况下用分隔符拆分字符串。 更具体地说,我想拆分split语句的条件。 我希望能够分开
"disorder == 1 or ( x < 100)"
进入
"disorder == 1"
"(x < 100)"
如果我使用split("or")
,我也会在disorder
内部得到一个拆分:
"dis"
"der == 1"
"( x < 100)"
如果我尝试使用类似regex的split("[ )]or[( ]")
,我会丢失( x < 100)
的括号:
"disorder == 1"
"x < 100)"
我正在寻找一种只在分隔符被空格或括号包围时分割字符串的方法,但我希望保留周围的内容
# 1 楼答案
正如弗莱克斯在评论中指出的那样,您可以使用word boundary character
结果:
有关使用“向前看/向后看”的解决方案,请参阅Kevins优秀答案
# 2 楼答案
您希望对空格/括号使用Lookaheads和Lookbehinds,所以类似这样:
[ )]
和[ (]
表示查看空格或括号。当然,这可以用任何其他边界字符,甚至是文字正则表达式边界\\b
替换李>(?<=...)
是一个积极的回顾。因此,它只在前面有一个空格或)
时匹配or
,但不会在拆分时删除它们李>(?=...)
是一个前瞻。因此,它只匹配or
后面跟一个空格或(
,但不使用拆分来删除它们李>Try it online.