正则表达式:每个组都是可选的,至少一个必须存在,之后允许其他任何内容
Regex: every group is optional, at least one must exist, after that anything else is allowed
这种情况几乎与 Regex: individually optional capture groups, but collectively at least one must exist 中的情况类似,但有一个扭曲,使得那里的解决方案无法使用 - 旧的解决方案依赖于可选组之后的字符串结尾。
我正在检查我们从外部源输入的数据是否有效。共有三个元素,我们称它们为 T、N 和 M,其中至少一个必须出现在字符串的开头。可能存在两个或所有三个。命令是规定的。在我需要的元素出现之后,其他任何元素也可能出现,但不是原始元素之一(变化:之后出现的可选尾巴必须以定义组中的字符开头,并且该组不包括T、N 或 M 字符)。元素之前、元素之间和之后都可以有空格。
(我称它们为 "elements" 并且它们中的每一个都是一个子字符串,我有一个有效的正则表达式,我将其作为一个组插入 - 但对于此处的示例,我将只使用字符T、N 和 M 作为占位符)。
在另一个问题上,我尝试使用否定前瞻,但问题是我无法指定字符串的结尾。
(?!$)(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: individually optional capture groups, but collectively at least one must exist 中的情况类似,但有一个扭曲,使得那里的解决方案无法使用 - 旧的解决方案依赖于可选组之后的字符串结尾。
我正在检查我们从外部源输入的数据是否有效。共有三个元素,我们称它们为 T、N 和 M,其中至少一个必须出现在字符串的开头。可能存在两个或所有三个。命令是规定的。在我需要的元素出现之后,其他任何元素也可能出现,但不是原始元素之一(变化:之后出现的可选尾巴必须以定义组中的字符开头,并且该组不包括T、N 或 M 字符)。元素之前、元素之间和之后都可以有空格。
(我称它们为 "elements" 并且它们中的每一个都是一个子字符串,我有一个有效的正则表达式,我将其作为一个组插入 - 但对于此处的示例,我将只使用字符T、N 和 M 作为占位符)。
在另一个问题上,我尝试使用否定前瞻,但问题是我无法指定字符串的结尾。
(?!$)(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
、``
检查我的哪些字符串有效的正确正则表达式是什么?