这个序列是什么“\\ +?”做一个字符串?

时间:2014-11-26 00:37:10

标签: java

试图理解别人的代码。使用split()

String e1 = "y=2x-5";
String[] t1 = e1.split("(y=)|(x\\+?)");

将其拆分为。 2-5

我已经用Google搜索,但无法在String中找到这些运营商的解释。谢谢你的帮助。除了列出的资源。这是一个关于正则表达式的附加教程 https://docs.oracle.com/javase/tutorial/essential/regex/char_classes.html

2 个答案:

答案 0 :(得分:1)

String对象中的Split方法需要regular expression。在你的代码中,字符串(y =)|(x \ +?)是一个正则表达式,然后\ +表示在字符串e1中查找文字字符“+”,并且?表示字符'+'是可选的(可能在字符串e1中出现或不出现。)

答案 1 :(得分:0)

.split()使用正则表达式作为参数。

如果您搜索正则表达式引用,它将解释运算符的含义以及如何使用它们。

这是一个很好的正则表达式测试程序,可以在您键入时为操作符提供上下文帮助:http://regex101.com/

关于你的正则表达式,它会像这样崩溃:

"(y=)|(x\\+?)"

转义处理后,分解为:

(y=)|(x\+?)

()告诉正则表达式这是一个match group,这意味着如果可以找到它,我们想要返回一些内容。

(y=)表示匹配找到的任何文字y=文字。

(x\+?)表示匹配任何文字x,后跟文字+。但是?是一个运算符,说前一个字符可以出现零次或多次。它基本上表示,如果有x,则匹配它和任何后续的+字符。

由于您将此传递给split(),因此该方法使用这些匹配将字符串分解为组件。

这是说将字符串拆分为y=x[+[+[...]]]

在您的情况下,它会在y=x分割,从而产生2-5