gpt4 book ai didi

c# - 使正则表达式匹配过去的行尾

转载 作者:行者123 更新时间:2023-11-30 14:47:09 24 4
gpt4 key购买 nike

我正在尝试构建一个正则表达式来帮助我解析大量 robots.txt 文件。我正在尝试查找特定的用户代理是否已被禁止。

文件看起来与他的大致相似,但可能因空白略有不同:

User-agent: *
Disallow: /next/

User-agent: *
Disallow: /mshots/v1/

# har har
User-agent: *
Disallow: /activate/

User-agent: *
Disallow: /wp-login.php

User-agent: *
Disallow: /signup/

User-agent: *
Disallow: /related-tags.php

到目前为止,我想出了这个正则表达式:

user-agent.*:(.*$)

为多行和忽略大小写设置了选项。

这非常适合我要求的用户代理部分,但现在我需要匹配声明另一个 user-agent 之前出现的任何 dissallow 词。我已经尝试匹配 $\r\n 但我不知道如何在 $ 之后继续匹配。我之后添加的任何模式似乎都不起作用。例如:

user-agent.*:(.*$)(^.*disallow)

我试图匹配换行符然后禁止,但它不匹配。此外,我不确定如何在 user-agent 之前终止匹配并仍在处理最后的 declaard 规则。

谁能指出我正确的方向?

最佳答案

你可以使用

(?i)user-agent.*:(.*)([\r\n]\s*.*disallow)

参见 regex demo .这里不需要RegexOptions.Multiline选项,因为不需要使用^,也不需要$那样需要重新定义它们的行为。

详情

  • (?i) - 不区分大小写的修饰符
  • user-agent - 文字子串
  • .* - 除换行符外的任何 0+ 个字符,尽可能多
  • : - 冒号
  • (.*) - 第 1 组:除换行符以外的任何 0+ 个字符,直至行尾
  • ([\r\n]\s*.*disallow) - 第 2 组:
    • [\r\n]\s* - 换行字符(CR 或 LF),然后是 0+ 个空格
    • .* - 除换行符外的任何 0+ 个字符,尽可能多
    • disallow - 一个子字符串

关于c# - 使正则表达式匹配过去的行尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46565256/

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