Java中的正则表达式-匹配除“*”字符以外的任何字符

jw5wzhpr  于 2022-12-10  发布在  Java
关注(0)|答案(2)|浏览(184)

好的,我试着创建一个正则表达式,它将确保这两件事:
1.字符串包含两个'*'
1.字符串以3位数字结尾
我已经做了一些东西,这类作品,但它并不确保只有2 *,因为在这些空间之间的 *,它可能发生,有另一个 *:

Pattern.compile(".*\\*.*\\*[0-9]{3}", Pattern.CASE_INSENSITIVE);

所以,这些.* 可以是**任何东西,任何数量的字符,单词等等,**除了 ,因为我需要确保只有2个''。
我怎么能这样做呢?

mjqavswn

mjqavswn1#

[^*]匹配除*字符以外的任何字符,因此您可以

^(?:[^*]*\*){2}[^*]*\d{3}$
  • ^-线锚起点
  • (?:-非捕获组的开始
  • [^*]*-匹配零个或多个非*字符
  • \*-在*上匹配
  • )-非捕获组的结尾
  • {2}-重复两次
  • [^*]*-仅匹配非*字符
  • \d{3}-以3位数结尾
  • $-线锚末端

Demo
您在注解中添加了一个约束,即注解应以*结尾,后跟3位数字。

^(?:[^*]*\*){2}\d{3}$

Demo

bttbmeg0

bttbmeg02#

尝试跟随

^.*[\\*]{1}.*[\\*]{1}.*[0-9]{3}$

它确保有两个 *,并以3个数字结尾

相关问题