【问题标题】:Match anything.c but not anything.in.c匹配anything.c 但不匹配anything.in.c
【发布时间】:2018-05-11 00:44:54
【问题描述】:

我正在尝试编写一个匹配 a.c, hello.c, etc.c 但不匹配 a.in.c, hello.in.c, etc.in.c 的正则表达式。

这是我的正则表达式:https://regex101.com/r/jC8nB0/21

它表示负前瞻与我指定的不匹配,即.in.c。我不知道在哪里教它匹配.c。我在括号里面和外面都试过了。

我读过Regex: match everything but specific pattern,但它谈到了匹配除某些内容之外的所有内容,但我需要匹配除其他规则之外的规则。

【问题讨论】:

  • ^[^.]+(?!\.in)\.c 之类的作品。

标签: regex


【解决方案1】:

这对我有用。

.*(?<!(\.in))\.c

https://www.regular-expressions.info/lookaround.html

*编辑了来自 zzxyz 的好信息

【讨论】:

  • 如果您的字符串绝对是单个文件名并且只是一个文件名,则此方法效果很好。可能对操作有好处。虽然它可能应该是\.in 以避免writein.c 被过滤掉。
【解决方案2】:

考虑到未知输入,这实际上有点复杂。以下内容并不完美,但它避免了 .cpp 文件,并处理不包含文件名的字符串或包含文件名的较长字符串。

\b\S+(?<!\.in)\.c\b

https://regex101.com/r/jC8nB0/286

【讨论】:

    猜你喜欢
    • 2014-05-03
    • 1970-01-01
    • 1970-01-01
    • 2011-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多