正则表达式用于表示一系列字符,但不是连续的吗?

时间:2018-09-22 12:42:51

标签: regex

现在我正在使用(.*e.*r.*s.*)返回一个单词,例如 ERrandS,但我需要排除所有3个字符连续出现的单词,例如runnERS。序列中的任何2个字母可以连续出现。如果是2个字符,则仅当2个字符不连续时才应包括在内。

ers的测试用例:

  • 包括:ERrandSERaSeabEttoRSalgEbRaS,'vERseS'

  • 排除:runnERSadvERSary

1 个答案:

答案 0 :(得分:1)

最简单的方法可能就是认识到存在两种可能性,至少在er之间有一个字符,另一个在r之间有至少一个字符,如s

这意味着您需要以下内容:

e.+r.*s|e.*r.+s

此格式完全取决于您所使用的 正则表达式引擎(您尚未指定),但基本上,*表示前面项的零个或多个,{ {1}}表示一个或多个,+表示模式(左侧或右侧)是匹配项。显然,您需要增加区分大小写的敏感性,并且如果是“整个字符串”匹配项,则可能在开头和结尾处放置|,但是我给出的内容显示了如何匹配这两种可能性。