我怎么能简化这个正则表达式?

时间:2018-05-15 22:03:19

标签: regex

我有以下正则表达式,需要了解清理它/简化:

^\\\\server01\\c\$|ckpt|ect|fin_2\$/gim

我正在尝试匹配下面的多行:

匹配任何包含c $变体的行(所以\\server01\c$\anything

OR

匹配包含ckptectfin_2$

的所有行

在任何这些匹配之前或之后可能会有字符,例如_ect

非常感谢任何和所有帮助。 TIA

1 个答案:

答案 0 :(得分:0)

如果您只是想检查给定的行是否包含c$ckptectfin_2$,您只需使用此正则表达式:

^.*(?:c\$|ckpt|ect|fin_2\$).*$

说明:

  • ^ - 从行首开始检查锚点
  • .* - 匹配任意数量的任何字符(0或更多)UNTIL ...
  • (?: ... ) - 是一个非捕获组。我们不希望提取此组中的匹配,但希望将OR(#{1}})仅限于大括号内
  • | - 匹配c\$|ckpt|ect|fin_2\$c$ckptect。请注意,文字fin_2$字符需要由$转义,因为它也有其他用途(见下文)。
  • \ - 与上述相同,匹配任意数量的任何字符UNTIL ...
    .* - 行的结尾(如果禁用了多行标志,则为字符串的结尾)

在包含多行的文件中查找所有匹配项的必需标志:

  • $ - 全球 - 在首场比赛后没有回复(找到所有比赛)
  • g - 多行 - m适用于换行字符以及字符串/文件的结尾

由于您的问题不包含任何编程语言,我的答案仅限于为您提供可以试用的正则表达式。但是,与设置标志(和/或转义某些字符)相关的所有内容都在您的身边。

Link to demo on regex101.com