gpt4 book ai didi

regex - 在使用正则表达式之前查找所有文本

转载 作者:行者123 更新时间:2023-12-04 13:07:37 27 4
gpt4 key购买 nike

如何使用正则表达式查找文本“”之前的所有文本?

例如,我在下面包含了一些示例文本

This can include deleting, updating, or adding records to your database, which would then be reflex.

All text before this line will be included

You can make this a bit more sophisticated by encrypting the random number and then verifying that it is still a number when it is decrypted. Alternatively, you can pass a value and a key instead.

最佳答案

从解释开始......跳到结尾以获得快速答案

要匹配特定的文本片段,并确认它在那里但不将其包含在匹配中,您可以使用正前瞻,使用符号 (?=regex)
这确认 'regex' 存在于该位置,但仅匹配起始位置,而不匹配其内容。

所以,这给了我们表达式:

.*?(?=All text before this line will be included)

哪里 .是任意字符,并且 *?是一个惰性匹配(消耗尽可能少的数量,与消耗最多数量的常规 * 相比)。

然而,在几乎所有的正则表达式中 .将排除换行符,因此我们需要明确使用标志来包含换行符。
要使用的标志是 s ,(代表“单线模式”,尽管在某些情况下也称为“DOTALL”模式)。

这可以通过多种方式实现,包括......

在全局范围内,对于基于/的正则表达式:
/regex/s

正则表达式的内联、全局:
(?s)regex

内联,仅适用于括号部分:
(?s:reg)ex

并作为函数参数(取决于您使用哪种语言进行正则表达式)。

所以,可能你想要的正则表达式是这样的:
(?s).*?(?=All text before this line will be included)

但是,有一些警告:

首先,并不是所有的正则表达式都支持惰性量词——你可能只需要使用 .* ,(如果“之前的所有文本...”可以多次出现,则可能根据精确要求使用更复杂的逻辑)。

其次,并非所有正则表达式都支持前瞻,因此您需要使用捕获的组来获取要匹配的文本。

最后,您不能总是指定标志,例如 s以上,因此可能需要匹配“任何内容或换行符” (.|\n)或者 [\s\S] (空格而不是空格)以获得等效匹配。

如果您受到所有这些限制(我认为 XML 实现是),那么您必须执行以下操作:
([\s\S]*)All text before this line will be included

然后从匹配结果中提取第一个子组。

关于regex - 在使用正则表达式之前查找所有文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3071398/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com