【问题标题】:Regular expression that matches a pattern but excludes a match when it starts with a certain character匹配模式但在以特定字符开头时排除匹配的正则表达式
【发布时间】:2012-10-01 03:01:59
【问题描述】:

我有一个格式的字符串:

PATTERN 或 abcPATTERNdef 或 PATTERN 或 >

我创建了一个正则表达式(在 JavaScript 中)为 (^PATTERN)|([^\[]PATTERN),它 正在返回前 3 次出现而忽略最后一次出现,但是我似乎也在返回的前面的字符匹配:

“PATTERN”、“cPATTERN”和“PATTERN”

我需要的是没有前面字符的匹配项。

我是正则表达式的新手,如果问题反映了这一点,我深表歉意。

任何帮助将不胜感激。

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

    JavaScript 不能很好地支持lookbehinds,但如果你的格式要保持不变,你可以尝试这样的事情:

    PATTERN(?!])
    

    它匹配所有出现的“PATTERN”,但后面没有]

    如果不是这种情况,请告诉我,我会更新我的答案以包括检查开头的[

    【讨论】:

    • 我只是在阅读消极的前瞻(或后瞻),似乎我偶然发现了一个类似的表达。这个对我有用。非常感谢!
    【解决方案2】:

    我对你想要做什么感到有点困惑。你能看看这是否有效吗?

    (^PATTERN)|[^\[](PATTERN)
    

    您是否要查找 PATTERN 之间的所有字符串?

    【讨论】:

    • 它仍然会匹配之前的一个字符。
    • 你不能只找 (PATTERN) 吗?这将为您提供 PATTERN 的所有匹配项
    • 他想忽略示例中的最后一个。
    • @Adam - 当单词包含在方括号内时,我的要求是在字符串 except 中找到单词('PATTERN')的所有匹配项。因此,我首先创建了一个表达式,该表达式忽略具有起始方括号的单词的任何匹配项。
    猜你喜欢
    • 1970-01-01
    • 2014-06-05
    • 2022-12-11
    • 1970-01-01
    • 2010-11-17
    • 2020-06-03
    • 1970-01-01
    • 2017-04-28
    • 1970-01-01
    相关资源
    最近更新 更多