【问题标题】:Regex to match until either including or not including正则表达式匹配,直到包括或不包括
【发布时间】:2018-10-16 07:03:47
【问题描述】:

我正在寻找一个正则表达式来查找从 A 开始的子字符串,在 BC 处停止。但是,当它是B 时,它不应该包含B,但是当它是C 时,它应该包含C

例如这个文本:XXAXXXXBXX,那么它应该返回AXXXX,但是当它是XXAXXXXCXX时它应该返回AXXXXC

我已经看过积极的前瞻之类的东西,但到目前为止还没有奏效。目前我正在使用A.+(?=C|B) 之类的东西,但显然这是不对的:( 有人知道吗?

【问题讨论】:

  • 您似乎不需要任何环顾四周,除非您过度简化了示例文本/预期结果。

标签: javascript regex match lookahead


【解决方案1】:

嗯,我已经找到答案了!我可以使用这样的东西:(A.+)((?=B)|C)A.+ 开头并匹配到 C 或前瞻 B(根本不包括 B)。

【讨论】:

  • 还有/A([^B]*|C)/ 不使用任何前瞻。在''XXACBCXX''中,你的模式将匹配我认为你不想要的“'ACBC”。 ;-)
【解决方案2】:

试试这个模式:A[^BC]+C?

说明:以A开头匹配,然后匹配BC[^BC]+)以外的一个或多个字符,之后最多匹配一个C,如果不是存在,然后不匹配任何其他内容。

Demo

【讨论】:

    猜你喜欢
    • 2011-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多