Java正则表达式需要进一步的帮助

时间:2011-07-16 11:06:26

标签: java regex

我最近asked for and received help关于一个Java正则表达式,它匹配一个包含最多两个星号的字符串,可能是第一个或最后一个字符,或者两者都是。这是我接受的答案:

^\\*?[^*]+\\*?$

当然,要求现在已经改变,我需要进一步约束字符串,使其只能包含大小写字母,空格或星号通配符。不允许使用数字或标点符号(*除外)。对通配符定位的限制仍然如上所述。

所以这些字符串将匹配:

foo
f oo
*Foo
FOO *
*foo*
*F o o*

这些字符串不会:

*
**
**foo
*f*oo
1
*1
_
foo1*
_foo
%foo^

我花了很多年的时间尝试解决这个问题,即使使用RegexBuddy也无法解决这个问题。我真的不喜欢在Stack Overflow上问这样一个特定的问题,但我无法自己解决这个问题。

提前致谢。

2 个答案:

答案 0 :(得分:2)

这应该有效:

^\\*?[a-zA-Z ]+\\*?$

答案 1 :(得分:1)

如果正则表达式必须匹配所有Unicode字母:^\*?[\p{L} ]+\*?$