【发布时间】:2021-04-01 14:12:17
【问题描述】:
我需要从多个下划线分隔的表名中提取名称,它们总是以 3 位字母代码结尾,并且可以选择具有下划线分隔的 32 字符 GUID。可选地,表名本身可以有下划线
例如
| String | Expected Output |
|---|---|
| TableName_d835b913bdab4fed861805f26ce6c953_abc | TableName |
| TableName_abc | TableName |
| Table_Name_abc | Table_Name |
我可以使用正则表达式
(^[a-zA-Z0-9]+)_?([a-zA-Z0-9]{32})?(_[a-z]{3})
这适用于前 2 个示例,但不适用于最后一个。
使用
(^[a-zA-Z0-9_]+)_?([a-zA-Z0-9]{32})?(_[a-z]{3})
第一个示例中的结果包括输出中的 GUID。我尝试了前瞻选项,但这些选项似乎在这里不起作用,因为我想根据以下字符串包含或排除一些捕获组。
非常感谢任何帮助。
【问题讨论】:
标签: regex