我最近请求并得到了关于Java正则表达式的帮助,该正则表达式将匹配最多包含两个星号的字符串,星号可以是第一个字符,也可以是最后一个字符,也可以是两个字符。这是我接受的答案:
^\*?[^*]+\*?$
当然,需求现在已经改变,我需要进一步约束字符串,使其只能包含小写或大写字母、空格或星号通配符。不允许使用数字或标点符号(*
除外)。通配符定位的限制如上所述。
那么这些字符串将被匹配:
<>之前喷火f oo* FooFOO ** foo ** o o o*之前而这些字符串不会:
<>之前**** * foo* f * oo1* 1_foo1 *_foo% foo ^之前我花了很长时间试图解决这个问题,甚至使用RegexBuddy也没能解决。我真的不喜欢在Stack Overflow上问这样一个具体的问题,但是我自己就是找不到解决方案。
应该可以:
^\*?[a-zA-Z ]+\*?$
如果regex必须匹配所有Unicode字母:^*?[p{L} ]+*?$