[英]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.