Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 不包含空格且至少包含一个'*';_Java_Regex - Fatal编程技术网

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]*

第一种情况是要求的字母出现在第一颗星之前

第二种情况是先出现星星,然后出现所需字母


使用
|

组合这两种情况
*
代表什么?任何字符?不确定这怎么是“太宽”;有些人只是因为你要一个正则表达式而生气