【发布时间】:2019-06-22 20:19:55
【问题描述】:
我正在编写一个基于查询搜索数据库的程序(用于 python 家庭作业)
查询的格式如下(任意字段名称) 字段:值 并且多个用逗号隔开
EG
姓名:乔治·布什,地址:1234, b-street,电子邮件:email@email.com
我需要提取字段和值
我一直在使用不同的正则表达式,但我是普通人
现在我的“最佳”正则表达式是:([\w@ -]+): *([\w@ -]+)
但这不能正确捕获带有逗号的值,并且可能会丢失任意字符
这里有更多我想要的行为的例子
查询:“姓名:乔治·布什”
匹配:“姓名”、“乔治·布什”
查询:“地址:1234,街道街道”
匹配:'地址','1234,街道'
查询:“姓名:乔治·布什,地址:1234, street street, f13ldna-me:---”
Match1:“姓名”、“乔治·布什”
Match2:'地址','1234,街道'
Match3: 'f13ldna-me' , '---'
【问题讨论】:
-
你如何确定你有一个新的标识符?比如
"Name: George Bush, Address: xxx"的情况下:前面有没有字符? -
我认为预期的行为是逗号字符的存在让您知道另一个标识符字符即将到来。我认为他们没有意识到某些字段(例如地址)包含逗号我决定违反分配描述并仅使用指定的分隔符';'
-
@JeremiahGelb 您能否在添加分隔符时使用示例数据和预期匹配更新问题?
-
我让它与分隔符一起工作。我不会用分隔符更新问题。没有分隔符,您的答案效果很好
标签: regex python-3.x