最佳正则表达式

我有一个假设的路径,我想要一个简单的PCRE正则表达式。为了简单起见,我们假设其深度为三层,并且每个文件夹的名称分别为A,B和C。

以下各项应与表达式匹配:

A
AB
ABC

以下项目应与表达式匹配:

AC
ACB
B
BA
BAC
BC
BCA
C
CA
CAB
CB
CBA

我能想到的唯一表情是

^**A**(**B**(**C**)?)?$

但是,理想情况下,我希望图案的右侧不取决于深度(可能远大于3)。
^**A**\1**B**\1**C**$

请注意,我知道以上内容是无效的模式,但希望它能说明我的观点。

我已经弄乱了反向引用等,但是似乎无法破解。有什么想法吗?

wbx520czh 回答:最佳正则表达式

尽管这些

^(A|AB|ABC)$
^(A(BC?)?)$  

按照上述说明解决问题(感谢您选择ctwheels,这是更有效的选择),这可能更接近您要寻求的目标:

^A((?<=A)B)?((?<=B)C)?$

的意思是“ A,然后是可选的B,但前提是它跟随A,然后是可选的C,但仅当它跟随B”,因为它可以使用任意任意长的值列表上的简单迭代以编程方式进行构建。除了第一项,每个部分都是由

制成的
((?<=PREVIOUS)NEXT)?
本文链接:https://www.f2er.com/2795262.html

大家都在问