Java正则表达式需要更多帮助
我最近讨论了一个Java正则表达式,它将匹配一个最多包含两个星号的字符串,可以是第一个或最后一个字符,也可以是两个字符。这是我接受的答案:Java正则表达式需要更多帮助,java,regex,Java,Regex,我最近讨论了一个Java正则表达式,它将匹配一个最多包含两个星号的字符串,可以是第一个或最后一个字符,也可以是两个字符。这是我接受的答案: ^\\*?[^*]+\\*?$ 当然,需求现在已经改变,我需要进一步约束字符串,使其只能包含小写或大写字母、空格或星号通配符。不允许使用数字或标点符号(除了*)。通配符定位上的约束保持如上所述 因此,这些字符串将匹配: foo f oo *Foo FOO * *foo* *F o o* 福 f oo *福 福* *福* *F o o* 而这些字符串不会:
^\\*?[^*]+\\*?$
当然,需求现在已经改变,我需要进一步约束字符串,使其只能包含小写或大写字母、空格或星号通配符。不允许使用数字或标点符号(除了*
)。通配符定位上的约束保持如上所述
因此,这些字符串将匹配:
foo
f oo
*Foo
FOO *
*foo*
*F o o*
福
f oo
*福
福*
*福*
*F o o*
而这些字符串不会:
*
**
**foo
*f*oo
1
*1
_
foo1*
_foo
%foo^
*
**
**福
*f*oo
1.
*1
_
foo1*
_福
%福^
我花了很长时间试图解决这个问题,但一直没能解决,甚至没有使用。我真的不喜欢问这样一个关于堆栈溢出的具体问题,但我自己无法找到解决方案
提前感谢。这应该可以:
^\\*?[a-zA-Z ]+\\*?$
If regex必须匹配所有Unicode字母:
^\*?[\p{L}]+\*?$
谢谢,但出于某种原因,它似乎匹配下划线。@John Topley:-
是连字符。检查你的正则表达式。@johntopley,别这么认为-你能给我一个答案吗example@Peter伊万诺夫问题在于,在编辑答案之前,我复制并粘贴了带有小写字母z
typo的正则表达式!好了,谢谢。该死,我肯定我已经试过你的答案了!