【问题标题】:Check if a letter exists before a certain phrase in a word检查单词中某个短语之前是否存在字母
【发布时间】:2014-11-17 13:12:37
【问题描述】:

我的猜测是这需要先行/后行,我不熟悉它们。

问题很简单,可以说我有这个词

submarine

我希望我的正则表达式匹配如果有字母 r 但字母 s 不能出现在字母 r 之前。所以 submarine 将是失败的匹配,因为 s 确实出现在 r 之前。单词 word 将是匹配项,因为其中根本没有 s 字符串 wersr 也将是匹配项,因为我只需要检查第一个 r 并且在第一个 r 之前只有 wer 不包含 s

【问题讨论】:

    标签: regex


    【解决方案1】:

    您无需四处寻找。只需下面的正则表达式就可以完成这项工作。

    ^[^s]*r.*$
    

    DEMO

    【讨论】:

    • 是的,它会在我可以的时候将其标记为正确的答案
    【解决方案2】:
    ^(?=[^s]*r).*$
    

    试试这个。查看演示。

    http://regex101.com/r/lZ5mN8/16

    【讨论】:

    • 它不会匹配rssss
    • 向前看在这里有点矫枉过正。
    • 查看演示链接中的调试步骤。
    • 如果用户的语言不支持前瞻怎么办?
    • @AvinashRaj My guess is this needs lookaheads/behinds and i am not to familiar with them.
    【解决方案3】:

    要匹配单词中任何位置都带有“r”且前面没有“s”的单词:

    \b[^s\W]*r\w*\b
    

    demo匹配“rat”、“arsenic”和“more”,但不是“misread”或“submarine”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-29
      • 2021-06-28
      • 1970-01-01
      • 2014-04-06
      • 1970-01-01
      • 2017-12-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多