正则表达式表示 /abc/def 或 abc,但不是 "/Abc" 、 不是"//abc"、不是"abc/def"、不是"abc/"



我正在创建一个正则表达式,但找不到适合以下情况的正则表达式:

  1. 仅支持小写和"/&""后面必须跟一个小写字母
  2. 如果出现斜线,则第一个字符必须是斜线
  3. 有效:"/abc/def";,或";abc";,或"/ab/cdefg">
  4. 无效:"ABC";,或";ABC";,或"//abc";,或";abc/def";,或"/abc/">

使用替换:

^([a-z]+|(/[a-z]+)+)$

观看现场演示。

正则表达式允许整个输入(通过^(...)$(为:

  • [a-z]+-所有小写字母,或
  • (/[a-z]+)+-一个斜线,然后至少有一个小写字母,全部至少一次

这可以实现您想要的(在Python中(:

import re
strings = ["/abc/def", "abc", "/ABC", "ABC", "//abc", "abc/def", "/abc/"]
for s in strings:
pat = r'^(([a-z]+)|((/(?=[^/])[a-z]+)+))$'
print('YES: ' if re.match(pat, s) else 'NO:  ', s)