繁体   English   中英

正则表达式 Java 由星号分割的字符串

[英]Regex Java String Split by Asterisk

需要帮助。

line.split("*");

我使用这行代码将一个字符串拆分为一个星号标记。 但是,我的编译器出错了。 它说,“无效的正则表达式:悬挂元字符'*'”

如何解决这个问题? 提前致谢。

*在正则表达式中具有特殊意义。 你必须逃避它。

line.split("\\*");

试试这个语句:

line.split("\\*");

这是因为您使用了“*”,即正则表达式。 如果你想使用这个角色,你需要输入这样的东西:

line.split("\\*");

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

例如: String[] split = line.split("\\\\*");

希望这可以帮助。

如下所示, *有特殊含义,零次或多次

贪婪的 不情愿的 所有格 意义
X? 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));

用这个

" String data="玛尼*库姆";

String []value= data.split("\\*");

" 输出将是这样的:

value[0]= "Mani";
value[1]= "Kum";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM