【问题标题】:How to find a part of string with regex? [duplicate]如何使用正则表达式查找字符串的一部分? [复制]
【发布时间】:2019-07-20 05:07:36
【问题描述】:

如果下一个符号不是y,如何标记xy

我有四个字符串: 1.zxyy 2.zxyz 3.zxy 4.xy 表达式应标记字符串 2-4。 此正则表达式仅标记第二个字符串: ([x][y])(?=[^y]) 谢谢。

【问题讨论】:

  • 使用否定的类使用否定的前瞻而不是肯定的前瞻。这样你就不需要匹配不是y的字符,你只需要不匹配y
  • 你的正则表达式说“匹配 xy,如果它后面跟着不是 y 的东西”。相反,它应该说“如果 xy 后面没有 y,则匹配 xy”,即使 xy 后面没有任何内容,它也可以工作。您当前使用的是正向预读 ((?=...)),应该改用负预读 ((?!...))。
  • 附带说明,没有理由将 x 和 y 字符放在字符类中,xy 将匹配与 [x][y] 相同的内容,并且更具可读性和更易于编写。
  • @jhnc,好的,这个(x)(y)(?!y) 有效,谢谢!
  • 顺便说一句,xy(?!y) 可能就足够了。 (capturing groups) 在您想要提取匹配内容的一部分时很有用,但在这里您的两个组的内容将始终为“x”和“y”。

标签: regex


【解决方案1】:

Aaron 推荐的正则表达式如我所愿:

xy(?!y)

它标记 2.zxyz 3.zxy 4.xy,但不是 1.zxyy

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 1970-01-01
    • 2017-03-03
    • 1970-01-01
    • 1970-01-01
    • 2018-06-21
    • 1970-01-01
    相关资源
    最近更新 更多