我目前拥有的正则表达式是:
"^(?:(\\.\\.)|^([a-z]+[a-z.\\-]*)([\\*]?)[\\[]*([^\\]]*)[\\]]*)$";
它捕获“..”(第 1 组),第 2-4 组为空
或:
- 一组小写字母、点、破折号。以小写字母开头(第 2 组)
- 后跟可选星号(第 3 组)
- 后跟方括号内的可选内容(第 4 组)
我有几个问题,首先是让 group2 必须以字母结尾,我尝试了很多事情,包括:
"^([a-z]+[a-z.\\-]*[a-z]$)"
"^([a-z]+[a-z.\\-]*[a-z])$"
杀死 3-4 组中的任何东西
"^([a-z]+[a-z.\\-]*[a-z])"
这似乎没有什么不同
我遇到的另一个问题是第 4 组,它不依赖于方括号(这是有道理的,因为我有 * 字符)......但如果我删除该字符,它不会给我任何结果任何组。
非常需要和感谢任何帮助。
作为对以下评论的回应,以下内容应匹配:"string" - (group1)(group2)(group3)(group4)
".." - (..)()()()
"blah" - ()(blah)()()
"blah.blah" - ()(blah.blah)()()
"blah.blah*" - ()(blah.blah)(*)()
"blah*" - ()(blah)(*)()
"blah.blah*[foobar] - ()(blah.blah)(*)(foobar)
"blah[foobar] - ()(blah)()(foobar)
以下内容不应匹配:
"."
"..."
".blah"
"blah."
".blah*"
"blah.*[foobar]