gpt4 book ai didi

java - 任何带有回车符的字符

转载 作者:行者123 更新时间:2023-11-30 06:03:41 27 4
gpt4 key购买 nike

刚接触正则表达式,我相信我正在研究 java 的正则表达式,但有一个问题,即行中包含回车符,这使得 (.*) (最后一组)匹配除新行之外的所有内容.

^([0-9]{2}\s[A-Za-z]{3}\s[0-9]{4}\s[0-9]{2}:[0-9]{2}:[0-9]{2}(?:,[0-9]{3})?)\s(?:\^\[\[[0-9]{2}m)\[([A-Za-z]+)\](?:\^\[\[m)\s*([0-9a-fA-F\-]*)\s\(([^\)]+)\)\s((?:[a-zA-Z0-9-]+\.)+[A-Za-z0-9$]+):\s(?:\s\-\s)?(.*)

不匹配第一行之后的两行,但选择第四行

02 Jan 2018 05:25:56,546 ^[[32m[TEXT]^[[m aabb33-ddee33-54321 (host-1-usa-east) this.is.sample.log: service is responding normal
extra line 1
extra line 2
03 Jan 2018 08:25:56,546 ^[[32m[TEXT]^[[m aabb33-ddee33-54321 (host-1-usa-east) this.is.sample.log: service is responding normal

有没有办法让所有内容都与回车符匹配。

更新:

遵循正则表达式不会选取最后一组

 ^([0-9]{2}\s[A-Za-z]{3}\s[0-9]{4}\s[0-9]{2}:[0-9]{2}:[0-9]{2}(?:,[0-9]{3})?)\s(?:\^\[\[[0-9]{2}m)\[([A-Za-z]+)\](?:\^\[\[m)\s*([0-9a-fA-F\-]*)\s\(([^\)]+)\)\s((?:[a-zA-Z0-9-]+\.)+[A-Za-z0-9$]+):(?:\s\-\s)?(?:(?!^[0-9]{2}\s[A-Za-z]{3}\s[0-9]{4}\s[0-9]{2}:[0-9]{2}:[0-9]{2}).*(?:\r?\n)?)*

Service is responding normal
Test results 1 = True
Test results 2 = "{False}"


10 Aug 2018 06:00:02,152 ^[[32m[TEST]^[[m aabb345-397c-4656 (host-1-usa-east) this.is.sample.log: Service is responding normal
Test results 1 = True
Test results 2 = "{False}"
10 Aug 2018 06:00:02,152 ^[[32m[TEST]^[[m aabb345-397c-4656 (host-1-usa-east) this.is.sample.log: Service is responding normal

https://regex101.com/r/wc529u/2

最佳答案

您可以将最后一个 (.*) 替换为 (?:(?!^[0-9]{2}\s[A-Za-z]{3}\s[0-9]{4}\s[0-9]{2}:[0-9]{2}:[0-9]{2}).*(?:\r?\n) ?)* 按照 Sebastian Proske 的建议它使用负前瞻 (?! 来断言后面的内容不是您在正则表达式中指定的模式,并且匹配字符串末尾之前的任何字符并匹配可选的换行符。

替换部分的说明

  • (?: 非捕获组
    • (?! 负向前瞻
      • ^[0-9]{2}\s[A-Za-z]{3}\s[0-9]{4}\s[0-9]{2}:[0 -9]{2}:[0-9]{2} 与字符串开头匹配的模式
      • ).* 关闭负向预测并匹配任意字符零次或多次
    • (?:\r?\n)? 匹配可选换行符
  • )* 关闭非捕获组并重复零次或多次

您的正则表达式可能如下所示:

^([0-9]{2}\s[A-Za-z]{3}\s[0-9]{4}\s[0-9]{2}:[0-9]{2}:[0-9]{2}(?:,[0-9]{3})?)\s(?:\^\[\[[0-9]{2}m)\[([A-Za-z]+)\](?:\^\[\[m)\s*([0-9a-fA-F\-]*)\s\(([^\)]+)\)\s((?:[a-zA-Z0-9-]+\.)+[A-Za-z0-9$]+):\s(?:\s\-\s)?(?:(?!^[0-9]{2}\s[A-Za-z]{3}\s[0-9]{4}\s[0-9]{2}:[0-9]{2}:[0-9]{2}).*(?:\r?\n)?)*

关于java - 任何带有回车符的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51779057/

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