1

我正在编写一个基于查询搜索数据库的程序(用于python家庭作业)

查询的格式如下(任意字段名称) Field:Value 并用逗号分隔多个

例如

姓名:乔治·布什,地址:1234,b-street,电子邮件:email@email.com

我需要提取字段和值

我一直在玩弄不同的正则表达式,但我是个普通人

现在我的“最好的”正则表达式是这样的: ([\w@ -]+): *([\w@ -]+)

但这不能正确捕获带有逗号的值,并且可能会丢失任意字符

以下是我想要的行为的更多示例

查询:“姓名:乔治·布什”

匹配:'名字','乔治布什'


查询:“地址:1234,街道街道”

匹配:'地址','1234,街道'


查询:“姓名:乔治·布什,地址:1234, street street, f13ldna-me:---”

匹配1:'名字','乔治布什'

Match2:'地址','1234,街道'

Match3: 'f13ldna-me' , '---'

4

1 回答 1

2

要从示例数据中获取匹配项,您可以使用不匹配空格字符或 a的否定字符类:来匹配字段,因为示例数据中不包含空格。

对于值部分,您还可以使用匹配非 a 的否定字符类,:然后匹配逗号和 0+ 空格字符或断言字符串的结尾。

([^\s:]+):\s*([^:]+)(?:,\s*|$)

正则表达式演示

于 2019-06-22T20:50:44.407 回答