gpt4 book ai didi

第一次匹配时使用或使用第二个正则表达式的正则表达式?

转载 作者:行者123 更新时间:2023-12-03 06:59:46 24 4
gpt4 key购买 nike

我遇到了一种情况,我需要删除字符串的一部分,我想我可以为此使用正则表达式。

测试用例类似于

LINDA L
LINDSAY GRIFFIN
LINDSAY LIGHTHOUSE
LINDSAY PETERSON

我想删除尾随 L\b从第一还是领先 L.*?\b从第二个和第三个开始,这应该让我知道:
LINDA
GRIFFIN
LIGHTHOUSE
PETERSON
L\b|L.*?\b删除整个第一行和第三行(空格除外),这不是我想要的。有没有办法用一个表达式来做到这一点?我认为因为第一个正则表达式匹配,它不会移动到第二个。

谢谢大家,我们最终只使用了 CF 条件和两个替换,而不是一个复杂的正则表达式。

最佳答案

我认为这可以完成您想要做的事情:

(\bL$)|((?!.*\bL$)^L.*?\b)

解释一下, (\bL$)匹配第一个模式:单词边界,然后是 L,然后是行尾。
((?!.*\bL$)^L.*?\b)匹配一行开头的 L ,然后是单词的其余部分( .*?\b ,正如您所见,是到达单词末尾的合理模式)。此: (?!.*\bL$)是一个负面的前瞻,如果遵循 ?! 的模式,则阻止匹配匹配。在这种情况下,如果模式 \bL$ 将阻止匹配。出现在行中的任何位置。

无论如何,这就是我想出的。不过确实丑。正如您在问题中所暗示的那样,一个更好的方法是使用两个单独的正则表达式模式,仅当第一个没有找到该行的匹配项时才运行第二个。

关于第一次匹配时使用或使用第二个正则表达式的正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14203872/

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