gpt4 book ai didi

java - 匹配特定字符前后的正则表达式

转载 作者:行者123 更新时间:2023-12-04 15:18:06 26 4
gpt4 key购买 nike

我正在尝试制作一个定界符正则表达式(与 java.util.Scanner 一起使用),它在空白处分割字符串,并保留冒号、左括号和右括号作为单独的标记。即 foo(a:b)应该分割成标记 foo , ( , a , : , b) .

我目前最大的努力是模式 "\\s+|(?=[(:])|(?<=[:)])"由于某种原因,我无法理解在左括号之后和右括号之前无法匹配,但在冒号两边都匹配得很好。

最佳答案

如果您想要所有这些单独的部分,您可以扩展字符类,在左侧断言字符 [(:)] 之一,如果这是整个字符串,则断言其中一个字符右侧的字符 [(:]

如果还想匹配最后一个右括号之后的位置,两个字符类可以相同[(:)]

\s+|(?=[(:)])|(?<=[(:])

Regex demo | Java demo

示例代码

String s = "foo(a:b)";
Scanner scanner = new Scanner(s).useDelimiter("\\s+|(?=[(:)])|(?<=[(:])");
while(scanner.hasNext())
{
System.out.println(scanner.next());
}

输出

foo
(
a
:
b
)

关于java - 匹配特定字符前后的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63955867/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com