我试图弄清楚如何在python中表示以下正则表达式:
找到的第一次出现
CREATE PROC dbo.Usp_Contentment
AS
begin
declare @ErrMsg NVARCHAR(MAX) = ''
IF not exists (select 1 from dbo.Question where QuestionId= @QuestionId)
set @ErrMsg = 'Some msg'
if not exists (select 1 from dbo.Employee where Employee Id= @EmployeeId)
set @ErrMsg =@ErrMsg + 'some msg'
IF @msg=''
INSERT INTO dbo.contentment (employeeid, questionid, date, score, comment)
VALUES (@employeeID, @questionid, null, null, null)
else
RAISERROR(@ErrMsg,16,1)
end
例如:
{any character that isn't a letter}'{unlimited amount of any character including '}'{any character that isn't a letter}
我的问题是如何实现中间部分?如何找到数量不限的字符,直到找到最后的模式(`_)?
答案 0 :(得分:0)
您可以通过几种不同的方式来表示无限数量的字符:
*
:前面的字符(贪婪)为零个或多个+
:前面的一个或多个字符(贪婪)*?
:前面的字符为零或多个(非贪婪)+?
:前面的一个或多个字符(非贪婪)“贪心”表示将匹配尽可能多的字符。 “非贪婪”表示将匹配尽可能少的字符。 (有关贪婪和非贪婪的更多说明,请参见this answer。)
在您的情况下,听起来您想匹配一个或多个字符,并且匹配不贪心,因此您需要+?
。
在Python代码中:
import re
my_regex = re.compile(r"\W'[^']+?'\W")
my_regex.search("She said 'Hello There!'.")
此正则表达式与您的第二个示例'I've been sick' and then...
不匹配,因为第一个'
之前没有非单词字符。