gpt4 book ai didi

正则表达式匹配两个特定单词之间的连字符

转载 作者:行者123 更新时间:2023-12-02 03:11:30 25 4
gpt4 key购买 nike

给定以下示例,我将如何匹配单词“CAST”和“DATETIME”之间的每个连字符? (CAST(N'2013-11-26 10:52:47.957' AS DateTime))

该模式每行出现多次。字符串中的其他任何位置都可能存在不能匹配的连字符。

INSERT [dbo].[tbl_Content] ([Template], [CreatedDate], [Url], [PublishedDate]) VALUES (N’gallery-item.aspx', CAST(N'2013-11-26 10:52:47.957' AS DateTime), N'some-url', CAST(N'2013-11-26 00:00:00.000' AS DateTime))
INSERT [dbo].[tbl_Content] ([Template], [CreatedDate], [Url], [PublishedDate]) VALUES (N’another-item.aspx', CAST(N'2013-11-26 10:52:47.957' AS DateTime), N'some-other-url', CAST(N'2013-11-26 00:00:00.000' AS DateTime))

CAST(.*)DateTime 选择每行中第一次出现的“CAST”和最后一次出现的“DATETIME”之间的所有字符。此选择中可能有其他不应匹配的连字符。

- 将匹配文档中的任何连字符。

我想我需要以某种方式组合这两种模式,但我不具备正则表达式知识。 CAST(-)DateTime 不起作用。

正确的做法是什么?

如果平台很重要:这将用于在 Visual Studio Code 中进行查找替换.如果这不可能,我绝对愿意使用其他文本/代码编辑器。

最佳答案

如果您可以使用 Notepad++,则可以使用基于 \G 运算符的正则表达式,它有助于在初始匹配后找到连续的匹配项。

使用

(?:\bCAST\b|(?!^)\G)(?:(?!\b(?:DATETIME|CAST)\b)[^-])*\K-

并替换为您想要的任何符号(请记住,在 NPP 替换模式中必须对括号进行转义)。下面,我将 - 替换为 §

详细信息:

  • (?:\bCAST\b|(?!^)\G) - 整个单词 CAST 或上一场比赛的结束位置
  • (?:(?!\b(?:DATETIME|CAST)\b)[^-])* - 匹配任何字符但-(请参阅 [^-]),它不会开始整个单词序列 DATETIMECAST(请参阅否定先行 (?!\b(?:DATETIME|CAST)\b))
  • \K - 匹配重置运算符:到目前为止匹配的所有文本都被丢弃
  • - - 我们要匹配的连字符

enter image description here

关于正则表达式匹配两个特定单词之间的连字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39660260/

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