正则表达式每个字母只使用一次?

发布于 2024-08-28 08:24:55 字数 257 浏览 10 评论 0原文

是否可以构造一个 PCRE 风格的正则表达式,该表达式仅与列表中的每个字母匹配一次?

例如,如果您有字母“lrsa”,并且您尝试匹配单词列表:

^[lrsa]*m[lrsa]*$

您将匹配“lams”(有效),但也会匹配“lamas”(对于我们的目的无效,因为您只有一个“a” ”)。如果您的字母集是“lrsaa”,您会想要匹配“lamas”。

这可以用正则表达式实现吗?或者我应该以编程方式处理它?

Is it possible to construct a PCRE-style regular expression that will only match each letter in a list only once?

For example, if you have the letters "lrsa" and you try matching a word list against:

^[lrsa]*m[lrsa]*$

you're going to match "lams" (valid), but also "lamas" (invalid for our purposes because you only had one "a"). If your letter set was "lrsaa", you would want to match "lamas".

Is this possible with regular expressions, or should I handle it programmatically?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

ぺ禁宫浮华殁 2024-09-04 08:24:55

您可以使用否定前瞻:

^(?!.*?(.).*?\1)[lrsa]*m[lrsa]*$

将做您想做的事

You can use negative look-ahead:

^(?!.*?(.).*?\1)[lrsa]*m[lrsa]*$

will do what you want

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文