Java正则表达式只保留*开头或结尾

时间:2014-07-27 08:01:33

标签: java regex

用户可以输入任何字符串字符,唯一允许的特殊字符是*,可以放在字符串的开头或结尾。

例如:

*hello*     -> *hello
*h*ello     -> *hello
h*llo*      -> hello*
hello**     -> hello*
**hell**o** -> *hello

我喜欢有正则表达式。

2 个答案:

答案 0 :(得分:1)

这个以某种方式工作

String s="*he**llo*";//anything
boolean st=(s.startsWith("*"));
boolean et=(s.endsWith("*"));
String ns=s.replaceAll("\\*+","");
ns=(st)?("*"+ns):(et)?(ns+"*"):ns;

答案 1 :(得分:1)

在正则表达式下面会匹配所有*,它们不在开头或结尾。只需将匹配的*替换为空值。

正则表达式:

(?<!^)\*(?!$)

Java正则表达式,

"(?<!^)\\*(?!$)"

替换字符串:

Empty string

DEMO

Java代码将是,

String s="*he*****llo*";
String out=s.replaceAll("(?<!^)\\*(?!$)","");
System.out.println(out);

IDEONE