【发布时间】:2015-05-07 09:37:47
【问题描述】:
我正在尝试验证一些输入文本(这是一个更大的正则表达式的一部分),基本上我有一个值列表,在这个例子中替换为任意字符,我想匹配它们具有正确的约定..
IE我想匹配AAA001而不是AAA00并匹配ZZ00。
我希望将 AAA 和 ZZ 作为同一组返回,即 IE 组 1,但排除数字..
这就是我要做的事情:
^((AAA|BBC|CCC)(?=\d{3})|(ZZ|XX|YY)(?=\d{2}))$
我在前瞻的概念上哪里出了问题?我试过阅读,但无济于事。
谢谢
编辑:
所以这是一个完整的“混淆”正则表达式的例子。
^(?:OOO)(ABC|DEF)(RR|AA|DD|EE)((?:AAA|BBC|CCC)(?=\d{3})|(?:ZZ|XX|YY)(?=\d{2}))$
所以在我上面的最新示例中.. 我希望第 3 组返回 AAA|BBB|CCC 但不包含数字.. 如果可能,第 4 组可以返回序列号但不重要,它们可以被丢弃..
大卫
【问题讨论】:
-
如果您将
$移动到前瞻中,它将起作用。由于前瞻不消耗字符,因此您在 AAA 和 ZZ 之后断言字符串结尾 -
你能给出一些你想匹配的输入样本吗?还有其他你不想匹配的?
-
您在寻找类似
\b((?:AAA|BBC|CCC)(?=\d{3}\b)|(?:ZZ|XX|YY)(?=\d{2}\b))的东西吗?见regex101.com/r/cP1oX7/3。 -
你最后的调试图片有点漂亮。