【问题标题】:Regular expression which does not match a string [duplicate]与字符串不匹配的正则表达式[重复]
【发布时间】:2019-10-07 15:17:11
【问题描述】:

我正在尝试查找与以下字符串不匹配的正则表达式:

xxx_yyyyyy_zzz_aaaaa
xxx_yyyyyy_zzz_aaaaa_cat
xxx_yyyyyy_zzz_aaaaa_uom

我的正则表达式应该只让我得到xxx_yyyyyy_zzz_aaaaa,而不是包含_cat 和/或_uom 的那些。基本上我正在尝试使用正则表达式从我的行中过滤出带有_cat_uom 的行。

【问题讨论】:

  • 你需要line anchors,即^xxx_yyyyyy_zzz_aaaaa$
  • 它可以是任何东西 xxx_yyyyyy_zzz_aaaaa 只是一个示例。它也可以有 yy_ff_ss_kk 和 yy_ff_ss_kk_cat 和 yy_ff_ss_kk_uom。我只需要得到 yy_ff_ss_kk
  • [a-z]+(?:_[a-z]+){3}
  • 好的xyz_catcome这样的字符串应该匹配吗?

标签: regex regex-negation


【解决方案1】:

试试正则表达式:(?:[a-z]+(?:_[a-z]+)*)(?<!_cat|_uom)\b

Demo

【讨论】:

  • 嗨,马特。正则表达式应该过滤掉最后带有值 _cat 和 _uom 的任何行。前面有多少个字符串组无关紧要。
  • @vigneshasokan,我已经根据新要求更新了答案
  • 它正在删除所有内容
  • 你所说的“一切”是什么意思?
  • 它删除了所有 3 个组合,而不是只删除带有 _cat 和 _uom 的组合
猜你喜欢
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
  • 2021-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多