gpt4 book ai didi

java - 根据模式匹配从文件中提取行集

转载 作者:行者123 更新时间:2023-11-30 01:44:43 28 4
gpt4 key购买 nike

我有一个包含数千个元组(三行的集合)的文件,如下所示:

# dev2
SAMETEXT %{URI} ^dev2-00.XXX.XXX.XXX
SAMETEXT %{URI} ^/XXX/
DIFFTEXT ^/XXX/(.*) https://XXX-XXX-XXX-XXX-dev2.XXX.XXX.XXX.XXX.XXX/XXX/$1 [X,Y]

有多个相同种类但数据不同的集合,例如 dev1、dev2、dev3。现在我想以与文件中相同的方式获取除 dev2 之外的所有行。文件具有随机或混合组,但所有组都是如上所述的相同行的元组。

我尝试使用以下模式获取它,但它也给出了位于该跨度内的所有其他元组。

Pattern dev2Pattern = Pattern.compile("dev2\\R.*dev2-00.*\\RRewriteRule.*dev2", Pattern.DOTALL);

但是,我的目标不是在结果文件中获得匹配的模式。提前致谢。

最佳答案

如果您想匹配 # dev 之后的所有行(除非是 # dev 2),您可以使用负前瞻来断言 dev 后面的内容不是2.

然后匹配所有不以 # dev 开头并后跟数字的行。

^# dev(?!2\b)[0-9]+(?:\R(?!# dev[0-9]).*)*
  • ^ 字符串开头
  • # dev(?!2\b) 匹配 # dev 并断言右边直接不是 2 且不是单词边界
  • [0-9]+ 匹配 1 个以上数字
  • (?: 非捕获组
    • \R 匹配 unicode 换行符序列
    • (?!# dev[0-9]) 断言右边的不是 # dev 和数字
    • .* 如果是这种情况,则匹配 0+ 次除换行符之外的任何字符
  • )* 关闭组并重复 0 次以上

Regex demo | Java Demo

在java中

String regex = "^# dev(?!2\\b)[0-9]+(?:\\R(?!# dev[0-9]).*)*";

关于java - 根据模式匹配从文件中提取行集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58542422/

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