gpt4 book ai didi

正则表达式以字符串开头和/或结尾 - 如何简化?

转载 作者:行者123 更新时间:2023-12-01 09:03:18 25 4
gpt4 key购买 nike

我有一个可能以 ; 开头和/或结尾的字符串.我想匹配和替换这些 ;字符串。以下正则表达式有效,但如何使其更简单?

(?:^(; ).*)(?:.*(; )$)|(?:^(; ).*)|(?:.*(; )$)

这使用结构 AB|A|B(A 和 B,或 A,或 B)。

示例字符串:
  • ; foo ;bar; (2 匹配)
  • foo ;bar; (1 匹配)
  • ; foo ;bar (1 匹配)
  • foo ;bar (0 匹配)
  • 最佳答案

    请注意,非捕获组旨在对模式序列进行分组,如果您不量化该组,也不在内部使用替代方案,则非捕获组将变得多余。所以,你的正则表达式看起来像 ^(; ).*.*(; )$|^(; ).*|.*(; )$没有这些组,你很容易看到有一个双 .*在第一个选择中。将模式减少到 ^(; ).*(; )$|^(; ).*|.*(; )$你可以看到如果第一部分不匹配,第二或第三部分会找到;在开头或结尾处有一个空格,因此第一个选项看起来多余(除非您需要拆分 3 个案例的替换逻辑!)。

    因此,如果您只想用 1 个替换模式替换匹配项,则可以使用

    ^;\s*|;\s*$

    regex demo

    关于正则表达式以字符串开头和/或结尾 - 如何简化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40464861/

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