正则表达式问题-匹配单个字母。排除连续字母

时间:2018-10-15 16:25:56

标签: regex

创建正则表达式会给我我想要的东西时遇到问题。我需要你的帮助!所以我们使用的文字是:

S      1SS          1S

“ S”和“ 1S”是匹配项。 “ 1SS”不匹配。我希望它比不包含三个字符的东西更加具体,但这可能是一个解决方案。

关于如何排除“ 1SS”的其他想法?我想不通!

谢谢

马克S。

2 个答案:

答案 0 :(得分:1)

您可以使用否定的超前模式来避免匹配连续的字母S

\b\d*S(?!S)

演示:https://regex101.com/r/sv467b/2

说明:\b与单词边界匹配,以确保在两个连续的S中不匹配第二个S\d*匹配零个或多个数字以允许可选的前面的数字。 S后跟(?!S),这是一种负向超前模式,可确保S之后的不是另一个S

答案 1 :(得分:0)

具有更通用应用程序的正则表达式类似于:

\b(?:(.)(?!\1))+\b
  • \ b用于单词边界。
  • 列表项
  • (?:)是一个非捕获组。
  • (?:)是一个否定的超前组。
  • \ 1是组引用。