Regex 在正则表达式中第一个插入符号命中之前捕获字符串?

Regex 在正则表达式中第一个插入符号命中之前捕获字符串?,regex,Regex,目前我正在使用遗留系统,很多工作涉及到分解分隔字符串和根据某些规则进行测试 使用此字符串,如何在返回引用和搜索词中返回“Active”,并在其到达第一个插入符号(^)时停止: 是否可以在正则表达式中包含此“(.+)”?我询问的原因是,实际的正则表达式“(.+)”在数据库中定义为切割这些消息,并且可以从前端系统设置它们的关联规则。内容可以是任何内容(在本例中为“活动”),这就是为什么在本例中使用“+” 规则:插入符号不能出现在括号之间,因为这将导致它也存储在数据库字段中,并在另一个系统字段的其他位

目前我正在使用遗留系统,很多工作涉及到分解分隔字符串和根据某些规则进行测试

使用此字符串,如何在返回引用和搜索词中返回“Active”,并在其到达第一个插入符号(^)时停止:

是否可以在正则表达式中包含此“
(.+)
”?我询问的原因是,实际的正则表达式“
(.+)
”在数据库中定义为切割这些消息,并且可以从前端系统设置它们的关联规则。内容可以是任何内容(在本例中为“活动”),这就是为什么在本例中使用“+”

规则:插入符号不能出现在括号之间,因为这将导致它也存储在数据库字段中,并在另一个系统字段的其他位置定义

如果你有比“
(.+)
”更好的建议,我会很高兴听到的

提前谢谢

(.+?)\^
应该抓住第一个^

如果必须包含
(.+)
而不进行修改,则可以使用以下方法:

(.+?)\^(.+)
第一个反向引用仍然是正确的,您可以忽略第二个

^([^\^]+)
应该抓住第一个^

如果必须包含
(.+)
而不进行修改,则可以使用以下方法:

(.+?)\^(.+)
第一个反向引用仍然是正确的,您可以忽略第二个

^([^\^]+)
如果您的RE库不支持非贪婪,那么这应该是可行的


如果您的RE库不支持非贪婪,那么这应该是可行的。

正则表达式在这里真是太过分了

只取字符串的前n个字符,其中n是第一个插入符号的位置

伪代码:

InputString.Left(InputString.IndexOf("^"))

这里的正则表达式真是太过分了

只取字符串的前n个字符,其中n是第一个插入符号的位置

伪代码:

InputString.Left(InputString.IndexOf("^"))

我知道。因为这是一个“引擎”,所有东西都使用正则表达式,为了保持一致性,我不这么认为,但对于这个特殊的、更简单的消息类型,我现在需要支持,也许抓住字符串左边的“^”将是一种方法。谢谢,我知道。因为这是一个“引擎”,所有东西都使用正则表达式,为了保持一致性,我不这么认为,但对于这个特殊的、更简单的消息类型,我现在需要支持,也许抓住字符串左边的“^”将是一种方法。谢谢。是的,我知道这种方法,但意识到我必须尊重“+”。是的,我知道这种方法,但意识到我必须尊重“+”。谢谢戈登,效果很好!令人吃惊的正如recursive所说,为了提高效率,我需要做出一个关于删除一致性的决定。谢谢Gordon,它工作得非常好!令人吃惊的现在,正如recursive所说,为了提高效率,我需要做出关于删除一致性的决定。