互斥正则表达式模式

Mutually Exclusive Regex Patterns

我正在尝试构建一组正确识别一组字段类型的正则表达式模式,但无法弄清楚如何让它们相互排斥。这些语法约定似乎总是有足够的重叠,以至于我进行了我不想进行的匹配。


变量:捕获全部

$字段

$field_with_underscores

标准字段:捕获table,捕获第一个点后的所有内容

$table.field

$table.field.subfield

$table.field.subfield_with_underscores

$table.field_with_underscores

$table.field_with_underscores.subfield

$table.field_with_underscores.subfield_with_underscores

自定义字段:捕获table,捕获c$

之后的所有内容

$table.c$字段

$table.c$field_with_underscores

自定义对象系统属性:捕获table,捕获对象,捕获$

之后的一切

$table.object$字段

$table.object$field_with_underscores


到目前为止,我有以下内容:

变量:工作

^$[a-zA-Z_]+$ 

标准字段:不起作用,选择自定义对象系统属性

$([a-zA-Z_]+)\.([^c$][a-zA-Z_\.]+)[\,]? 

自定义字段:有效

$([a-zA-Z_]+)\.[c]$([a-zA-Z_]+)

自定义对象系统属性:有效

$([a-zA-Z_]+)\.(?!c$)([a-zA-Z_]+)$([a-zA-Z_]+) 

有人可以帮帮我吗?我赶紧运行把头发拔出来...:\

^$([a-zA-Z_]+)(?:\.[a-zA-Z_\.]+)+$

您可以尝试使用标准 fields.See 演示。

https://www.regex101.com/r/bC8aZ4/8

$([a-zA-Z_]+)(?:(?!.*$)\.[a-zA-Z_\.]+)+

https://www.regex101.com/r/bC8aZ4/9

我的问题最好通过以下方式解决:

$([\w]+)\.((?!.+$)(\.?[\w]+)+)