我最近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上问这样一个特定的问题,但我无法自己解决这个问题。
提前致谢。
答案 0 :(得分:2)
这应该有效:
^\\*?[a-zA-Z ]+\\*?$
答案 1 :(得分:1)
如果正则表达式必须匹配所有Unicode字母:^\*?[\p{L} ]+\*?$