正则表达式匹配字符串中的项目

时间:2018-03-19 11:37:02

标签: java regex

我试图编写正则表达式来检查字符串中的项是否符合某个条件:

它必须是一个字母后跟一个数字:

'a' then a number 0-7

'b' then a number 0-6

例如:

  • String" a7b6"应该是有效的,但
  • String" a7b7"应该是无效的(因为b后跟7,超出0-6的范围)和
  • String" 60"应该无效(因为这两个项目都是数字)

我目前写道:

[a0-7[b0-6]]+

但是这个表达式也验证了" a7b7"和" 60"。

我也尝试过:

[a\\d&&[^8-9]]+

这捕获" a7"和" 60&#34 ;;我不知道要添加什么来捕获" b6"部分并忽略" 60"

编辑:要添加字符串顺序不固定的事实,可能是" a7b6"," b3a6"或" b2a1"等

3 个答案:

答案 0 :(得分:2)

从您的示例中,您只是在搜索

single gameObject

是a,后跟0到7之间的数字,后跟b和0到6。

  • ab6将是假的
  • a4b7将是假的
  • a4将是假的
  • a2b0是对的。

允许其中的多个链接在一起,如

  • a4b4a3b5

您可以对它们进行分组,然后编写

a[0-7]b[0-6]

你的子结构[b0-6]例如意味着b或0或1,...或6,而不是b后跟某些东西。

我从未见过像(a[0-7]b[0-6])+ 这样的嵌套集,有时看起来很有用(a-z,除了......) - 我怀疑它们是否有效。

答案 1 :(得分:0)

[a-z[^np]]是字符类的语法,允许内部的任何一个字符。你想要一些不同的东西:

[…]

(a[0-7]|b[0-6])+ 是群组的语法。

答案 2 :(得分:0)

你需要理解[]的含义。 现在当你写[abc]时,暗示集合定义可以匹配字母a或b或c。

[a0-7 [b0-6]] +表示多次出现a / 0-7和b / 0-6。 我建议你再次阅读正则表达式文档。