regex 按星号拆分的正则表达式Java字符串

goqiplq2  于 2023-01-14  发布在  Java
关注(0)|答案(5)|浏览(150)

我们需要帮助。

line.split("*");

我用这行代码把一个字符串分割成一个星号,但是,我从我的编译器中得到一个错误,它说,“INVALID REGULAR EXPRESSION:挂起 meta字符“*”“
如何解决这个问题呢?先谢了。

yjghlzjz

yjghlzjz1#

*在正则表达式中有特殊含义,必须将其转义。

line.split("\\*");
9udxz4iz

9udxz4iz2#

因为你用了一个“*",那是一个正则表达式,如果你想用这个字符,你需要把这样的东西:

line.split("\\*");
snvhrwxg

snvhrwxg3#

试试这个说法:

line.split("\\*");
ctehm74n

ctehm74n4#

***是正则表达式中的元字符。它用于匹配0个或多个元素。如果要将***用作普通字符而不是特殊字符(即跳过其作为元字符的行为),请在其前面添加转义字符。

例如:String[] split = line.split("\\*");
希望这个有用。

envsm3lx

envsm3lx5#

如下面table所示,*有特殊含义,零次或多次
| 贪心|不情愿|占有|意义|
| - ------|- ------|- ------|- ------|
| X?|X?|X?+|X,一次或根本不|
| 十 *|X *?|X *+|X,零次或多次|
| X +|X+?|X ++|X,一次或多次|
| X {n}|X {n}?|X {n}+|X,正好n次|
| X {n,}|X {n,}?|X {n,}+|X,至少n次|
| X {n,m}|X {n,m}?|X {n,m}+|X,至少n次但不超过m次|
因此,您需要使用\对其进行转义。然而,\也是一个特殊字符,因此您需要添加一个额外的\来转义\。因此,所需的模式变为\\*

String[] arr = line.split("\\*");
System.out.println(java.util.Arrays.toString(arr));

或者,如anubhava所建议的,可以使用[*]。字符*在用作character class时不需要转义。

String[] arr = line.split("[*]");
System.out.println(java.util.Arrays.toString(arr));

相关问题