我想以以下模式在文本中捕获标记:
前 2 个字符是字母并且是必需的,以 [AZ] 或 [AZ][0-9] 结尾,这是可选的任何介于两者之间的字符。
例子:
AA123123A1
AA123123A
AA123123123
我想在第 1 组中匹配并捕获以 ([AZ][AZ]) 开头,在第 3 组中以 [AZ] 或 [AZ][0-9] 结尾,然后在第 2 组中的所有其他内容
例子:
AA123123A1 => [AA,123123,A1]
AA123123A。=> [AA,123123,A]
AA123123123 => [AA,123123123,'']
以下正则表达式在 python 中有效,但在 postgres 中无效。
regex='^([A-Za-z]{2})((?:.+)(?=[A-Za-z][0-9]{0,1})|(?:.*))([A-Za-z][0-9]{0,1}){0,1}$'
在 Postgressql 中
select regexp_matches('AA2311121A1',
'^([A-Za-z]{2})((?:.+)(?=[A-Za-z][0-9]{0,1})|(?:.*))(.*)$','x');
结果:
{AA,2311121A1,""}
我正在尝试探索为什么积极的前瞻行为与 python 不同,以及在这种情况下如何在 Postgres 中进行积极的前瞻工作。