这种情况几乎就像在 Regex:个别可选的捕获组,但集体至少必须存在一个。但有一个转折,使得那里的解决方案无法使用--旧的解决方案依赖于字符串的末端在可选组之后。
我正在检查我们从外部输入的数据是否有效。有三个元素,我们称它们为T、N和M,其中至少有一个必须出现在字符串的开头。有可能两个或三个都存在。顺序是规定的。而在我所要求的元素出现后,其他任何元素也可能出现,但不是原始元素之一(变体:后面的可选尾巴必须以一个定义组的字符开始,而这个组不包括T、N或M字符)。元素之前、元素之间、元素之后都可以有空格。
(我称它们为 "元素",每个元素都是一个子串,我有一个有效的regex,我将把它作为一个组来插入--但在这里的例子中,我将只使用字符T、N和M作为占位符)。
根据另一个问题,我试着使用负向的lookahead,但问题是我不能指定字符串的结尾。
(?!$)(T?)(N?)(M?)$。
这不符合以下情况 TNL1
哪些是有效的(我的开头有一个T和N,所以我不在乎后面是否有一个L1)。
(?!$)(T?)(N?)(M?)
除了空字符串之外,这符合任何东西,例如 L1
仅限。
一些有效的测试案例是 T
, N
, M
, TM
, T N
, TM and something else
. 一些无效的测试用例是。only other stuff
, MNT
, other beginning, then TNM
, ``
什么是一个合适的regex来检查我的字符串中哪些是有效的?