我们需要帮助。
line.split("*");
我用这行代码把一个字符串分割成一个星号,但是,我从我的编译器中得到一个错误,它说,“INVALID REGULAR EXPRESSION:挂起 meta字符“*”“如何解决这个问题呢?先谢了。
yjghlzjz1#
*在正则表达式中有特殊含义,必须将其转义。
*
line.split("\\*");
9udxz4iz2#
因为你用了一个“*",那是一个正则表达式,如果你想用这个字符,你需要把这样的东西:
snvhrwxg3#
试试这个说法:
ctehm74n4#
***是正则表达式中的元字符。它用于匹配0个或多个元素。如果要将***用作普通字符而不是特殊字符(即跳过其作为元字符的行为),请在其前面添加转义字符。
例如:String[] split = line.split("\\*");希望这个有用。
String[] split = line.split("\\*");
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));
5条答案
按热度按时间yjghlzjz1#
*
在正则表达式中有特殊含义,必须将其转义。9udxz4iz2#
因为你用了一个“*",那是一个正则表达式,如果你想用这个字符,你需要把这样的东西:
snvhrwxg3#
试试这个说法:
ctehm74n4#
***是正则表达式中的元字符。它用于匹配0个或多个元素。如果要将***用作普通字符而不是特殊字符(即跳过其作为元字符的行为),请在其前面添加转义字符。
例如:
String[] split = line.split("\\*");
希望这个有用。
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次|
因此,您需要使用
\
对其进行转义。然而,\
也是一个特殊字符,因此您需要添加一个额外的\
来转义\
。因此,所需的模式变为\\*
。或者,如anubhava所建议的,可以使用
[*]
。字符*
在用作character class时不需要转义。