Regex 如何使用正则表达式匹配特定行?

Regex 如何使用正则表达式匹配特定行?,regex,Regex,我需要使用正则表达式匹配以下行 单行包含以下内容,例如: 2010/11/29 09:37:55 (2768)FMS:600 ERROR> Received SIGWARNING: nonstandard use of escape in a string literal 2010/11/29 09:37:55 (2768)FMS:600 ERROR> Received SIGNOTICE: exp: select * from follow_me_switch.call_from_

我需要使用正则表达式匹配以下行

单行包含以下内容,例如:

2010/11/29 09:37:55 (2768)FMS:600 ERROR> Received SIGWARNING: nonstandard use of escape in a string literal
2010/11/29 09:37:55 (2768)FMS:600 ERROR> Received SIGNOTICE: exp: select * from follow_me_switch.call_from_entries where follow_me_group_id in ( select id from follow_me_switch.follow_me_groups where profile_id =105 and follow_me_switch.call_from_entries.call_from_number !~ \'^s*$\'
从这些行中,我需要匹配并删除日期和时间戳,直到出现错误> 我们如何使用高效的正则表达式来匹配它

提前谢谢。

嗯,那么:

^2010\/11\/29 09:39:57 \(2786\)Db_Wrapper\.pm:1404 ERROR\>
但不知怎的,我认为,你的意思不同


编辑:此答案适用于之前的问题,该问题后来被编辑。

如果您指的是db_包装中出现错误的每一行,则类似于

^\d{4}/\d{1,2}/\d{1,2} \d{2}:\d{2}:\d{2} \(\d+\)Db_Wrapper\.pm:\d+ ERROR>
或者更容易,只是

^.*Db_Wrapper\.pm:\d+ ERROR>
还有一个regexp:


^\d{4}/\d{2}/\d{2}\s\d{2}:\d{2}:\d{2}\s\\d+\Db\u Wrapper\.pm:\d+\sERROR>

这是您想要的吗

^.*?(?=ERROR)
并替换为空字符串

看到了吗

这将匹配所有内容,直到出现第一个错误

*?是一个懒惰的匹配,只会匹配尽可能少


?=ERROR是一个正向前瞻,它检查字符串错误下一个出现的时间

需要正则表达式来匹配上面的行。但是你只是简单地匹配了给定的行。那么,你需要匹配哪些部分,哪些部分和变量?你能相应地更新你的问题吗?您可以用粗体标记要加工的零件。@rekha,如果您提供更多的示例,也许会更好,这样我们就可以看到每一行的哪些部分是不同的。单行包含以下内容。2010/11/29 09:37:55 2768FMS:600错误>接收到的SIGWARNING:字符串文本中转义的非标准使用2010/11/29 09:37:55 2768FMS:600错误>接收到的签名:exp:select*from follow_me_switch.call_from_条目,其中follow_me_group_id在select id from follow__me___switch.follow_me_组,其中profile_id=105和跟随我的开关。从条目呼叫。从号码呼叫!~\'^s*$\'从该行开始,我需要匹配并删除日期和时间戳,直到出现错误>。我已根据此注释更新了您的问题。如果我做错了什么,请把它改一下。快点。扩展:我认为这将是迄今为止最好的答案,因为它不依赖于严格的匹配,而只是错误的开始,这似乎更有效、更直观。