gpt4 book ai didi

java - 当特定字符串包含在其中时,正则表达式提取连续的单行注释

转载 作者:行者123 更新时间:2023-12-01 14:03:50 24 4
gpt4 key购买 nike

考虑如下 SQL 文件,其中包含许多单行注释:

-- I'm a little teapot
<<< not a comment >>>
-- some random junk
-- random Mary had a
-- little lamb random
-- more random junk
<<< not a comment >>>

使用正则表达式,我希望匹配字符串 Mary.*?lamb 并提取所有连续的(上方和下方)单行注释。

预期输出为:

-- some random junk
-- random Mary had a
-- little lamb random
-- more random junk

我正在尝试一些类似的事情,但没有成功。

(--[\S\t\x20]*\n)*?(--[\S\t\x20]*?Mary.*?lamb[\S\t\x20]*?\n)(--[\S\t\x20]*\n)*

最佳答案

也许你可以尝试这样的事情:

^((?:--(?:(?!Mary)[^\n])*[\r\n]{1,2})*)(--[^\n]+?Mary[\s\S]+?lamb[^\n]+[\r\n]{1,2})((?:--(?:(?!Mary)[^\n])*[\r\n]{1,2})*)

regex101 demo

由于它是 Java,因此您可能需要在上面的正则表达式中的反斜杠之前添加一些反斜杠才能使其正常工作:

^((?:--(?:(?!Mary)[^\\n])*[\\r\\n]{1,2})*)(--[^\\n]+?Mary[\\s\\S]+?lamb[^\\n]+[\\r\\n]{1,2})((?:--(?:(?!Mary)[^\\n])*[\\r\\n]{1,2})*)

我使用 [\\r\\n]{1,2} 因为我无法确定该文件是否只有 \n ,或者仅 \r\r\n,这样它就可以在所有情况下工作(虽然它可以匹配连续的两个换行符,但是有 -- 这很好)。

关于java - 当特定字符串包含在其中时,正则表达式提取连续的单行注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19099375/

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