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



我最近请求并得到了关于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} ]+*?$

最新更新