gpt4 book ai didi

Java 正则表达式 : [^(\\s? -\\s?)]。 's' 上的 PatternSyntaxException ?

转载 作者:行者123 更新时间:2023-12-01 22:47:41 25 4
gpt4 key购买 nike

我今天刚刚开始学习 java 正则表达式,所以请原谅我采取了一种相当懒惰的方法来学习我的正则表达式有什么问题。基本上,我试图在“空白”、-、“空白”模式(其中空白是一个或没有)上拆分字符串,但我不确定为什么该模式无法编译。我在 [^(\s?-\s?)] (索引 8)中的第二个 s 上收到错误。如果有人可以帮助我,我将非常感激!

最佳答案

您正在将尝试拆分的模式放在否定的 character class 内部。它所做的与您期望的完全相反。

[^(\s?-\s?)]  # matches any character except: 

# '('
# whitespace (\n, \r, \t, \f, and " ")
# '?'
# '-'
# whitespace (\n, \r, \t, \f, and " ")
# '?'
# ')'

你的语法确实不正确,但是为什么它不能编译?嗯,在字符类内部,连字符具有特殊含义。您可以将连字符放置为类的第一个或最后一个字符。在某些正则表达式实现中,您还可以直接放置在范围之后。如果您将连字符放在其他位置,则需要转义它才能将其添加到您的类中。

解决编译问题,您只需转义连字符即可,但此正则表达式仍然无法执行您想要的操作。

I'm trying to split a string on white space, -, white space pattern...

从模式中删除字符类和捕获组:

String s = "foo - bar - baz-quz";
String[] parts = s.split("\\s?-\\s?");
System.out.println(Arrays.toString(parts)); //=> [foo, bar, baz, quz]

这里有一些学习正则表达式的引用。

关于Java 正则表达式 : [^(\\s? -\\s?)]。 's' 上的 PatternSyntaxException ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25110565/

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