我目前的正则表达式是:
"^(?:(\\.\\.)|^([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]
答案 0 :(得分:2)
┌ one or more lowercase letters followed by
│
│ ┌ none or several occurrences of ───────────────────────┐
│ │ ┌ dot or dash │
│ │ │ ┌ followed by one or more lowercase letters │
│ │ │ │ ┌─────────────────────────────────────┘
│ │ │ │ │
│ │ │ │ │ ┌ followed by optional asterisk
│ │ │ │ │ │
│ │ │ │ │ │ ┌ followed by optional square brackets
┌ or │ │ │ │ │ │ │ ┌ with some content inside │
│ │ │ │ │ │ │ │ │ ┌─────────────────┘
│ │ │ │ │ │ │ │ │ │
^(?:(\\.\\.)|(?:([a-z]+(?:[.\\-]*[a-z]+)*)(\\*?)(?:\\[([^\\]]*)\\])?))$
│ │ │ │
│ └ two │ │
│ dots ┘ │
│ │
└ start of string end of string ┘
答案 1 :(得分:0)
这是我能想到的:
^(\.{2})?([a-z](?:\.*-*[a-z])*)?(\*)?(\[[^]]*\])?$
我不确定括号中允许的是什么,所以它匹配那里的任何非括号字母。
(正确转义:^(\\.{2})?([a-z](?:\\.*-*[a-z])*)?(\\*)?(\\[[^]]*\\])?$
)
此正则表达式:[a-z](?:\.*-*[a-z])*
将始终匹配以小写字母开头和结尾的字符串。