我正在尝试解析错误字符串,以便在API中返回有意义的输出。以下是错误字符串的示例:
Integrity constraint violation: 1062 Duplicate entry 'email@test.com' for key 'UNIQ_8D93D649A0D96FBF'
我尝试从这句话中解析email@test.com
。这是我现在的正则表达式:
/(?<=Duplicate entry ')(.*)'/
我正在为Duplicate entry '
做一个积极的看法,它让我到了我想要的字符串的开头。然后我想捕捉所有内容,直到我达到单引号。但是,这个正则表达式正在捕获以下内容:
email@test.com' for key 'UNIQ_8D93D649A0D96FBF'
所以我的正则表达式一直在捕捉到最终的单引号。我最初的预感是,我需要做一个不贪心的积极前瞻。
答案 0 :(得分:1)
您遇到的问题是因为默认情况下量词是贪婪的。将.*
更改为.*?
会解决您的问题,但使用[^']*
被认为更正确(并且效果也更好),因为它不会回溯。
Integrity constraint violation: 1062 Duplicate entry 'email@test.com' for key 'UNIQ_8D93D649A0D96FBF'
email@test.com
(?<=Duplicate entry ')[^']*