Java 不包含空格且至少包含一个'*';
我有点被这件事缠住了。应匹配的字符串示例:Java 不包含空格且至少包含一个'*';,java,regex,Java,Regex,我有点被这件事缠住了。应匹配的字符串示例: *abc abc* *abc* ab*c a*b*c *a*b*c* 不应匹配的字符串示例: abc * abc* a*bc(在本例中,'*bc'应匹配) (注:如果有区别的话,我正在用Java工作)您可以使用积极的前瞻模式来确保匹配中至少有一个*,使用消极的前瞻模式来确保*不是唯一的: (?=\S*\*)(?!\*(?:\s|$))\S+ 演示:不使用lookaheads的解决方案: [a-z]+\*[*a-z]*\*+[a-z][*a-z
- *abc
- abc*
- *abc*
- ab*c
- a*b*c
- *a*b*c*
- abc
- *
- abc*
- a*bc(在本例中,'*bc'应匹配)
(注:如果有区别的话,我正在用Java工作)您可以使用积极的前瞻模式来确保匹配中至少有一个
*
,使用消极的前瞻模式来确保*
不是唯一的:
(?=\S*\*)(?!\*(?:\s|$))\S+
演示:不使用lookaheads的解决方案:
[a-z]+\*[*a-z]*\*+[a-z][*a-z]*
第一种情况是要求的字母出现在第一颗星之前
第二种情况是先出现星星,然后出现所需字母
使用
|
组合这两种情况*
代表什么?任何字符?不确定这怎么是“太宽”;有些人只是因为你要一个正则表达式而生气