正则表达式用于不包含空格和至少一个'*'的字符串

时间:2019-03-07 13:14:52

标签: java regex

我有点喜欢这个。应该匹配的字符串示例:

  • * abc
  • abc *
  • * abc *
  • ab * c
  • a * b * c
  • * a * b * c *

不匹配的字符串示例:

  • abc
  • *
  • abc *
  • a * bc(在此示例中,'* bc'应该匹配)

(PS:如果有帮助,我正在Java中工作)

2 个答案:

答案 0 :(得分:2)

您可以使用正向超前模式来确保比赛中至少有一个*,并可以使用负向超前模式来确保*不孤单:

(?=\S*\*)(?!\*(?:\s|$))\S+

演示:https://regex101.com/r/0sdl5a/1

答案 1 :(得分:1)

无需先行处理的解决方案:

[a-z]+\*[*a-z]*|\*+[a-z][*a-z]*

第一种情况是所需字母出现在第一颗星之前。

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

使用|

将这两种情况组合在一起