【发布时间】:2021-01-05 09:35:30
【问题描述】:
我正在尝试制作一个分隔符正则表达式(用于 java.util.Scanner),它在空格上分割字符串,并保留冒号、左括号和右括号作为单独的标记。也就是说,foo(a:b) 应该分割成标记 foo、(、a、:、b 和 )。
我目前的最大努力是模式"\\s+|(?=[(:])|(?<=[:)])",由于某种我无法理解的原因,它在左括号之后和右括号之前无法匹配,但在冒号的两边都匹配得很好。
【问题讨论】:
-
试试
\s+|(?=[():])|(?<=[:(])regex101.com/r/9pSfWr/1 -
看来你只需要在字符类中包含两个括号,
"\\s+|(?=[():])|(?<=[:()])"
标签: java regex regex-lookarounds