gpt4 book ai didi

c# - 正则表达式以字符集开始和结束,但中间有不同的字符集

转载 作者:行者123 更新时间:2023-11-30 22:55:42 26 4
gpt4 key购买 nike

我正在尝试创建一个正则表达式:

  • 必须是一组字符中的第一个字符 ( FIRST_SET )
  • 可以选择在不同的字符集中添加后续字符 (SECOND_SET)
  • 但如果它有 2 个或更多字符,则最后一个字符必须在 FIRST_SET
  • 不能超过MAX_CHARS总字数

例子

  • FIRST_SET = a-c 或 e-g(因此排除 d)
  • SECOND_SET = a-g
  • MAX_CHARS = 10

这是我目前所拥有的:

^[a-c|e-g][a-g]{0,8}[a-c|e-g]{0,1}$

这似乎有效,除非 d是最后一个字符和总字符数 < MAX_CHARS

有办法解决这个问题吗?

最佳答案

你可以使用

^(?!.{11})(?=.*[a-ce-g]$)[a-ce-g][a-g]{0,9}$

参见 regex demo .

详情

  • ^ - 字符串的开始
  • (?!.{11}) - 最多允许 10 个字符
  • (?=.*[a-ce-g]$) - 在 0 个或多个字符之后,最后一个应该来自 FIRST SET
  • [a-ce-g] - 来自 FIRST SET
  • 的一封信
  • [a-g]{0,9} - SECOND SET
  • 中的零到九个字符
  • $ - 字符串结尾。

请注意,字符类中的 | 匹配文字管道字符,您需要将其从模式中删除。

(?!.{11}) 否定先行在字符串的开头执行一次,如果字符串中有任何 11 个字符(换行符除外),则匹配失败。您也可以使用 (?=.{0,10}$),它只需要字符串中的 0 到 10 个字符。

关于c# - 正则表达式以字符集开始和结束,但中间有不同的字符集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55049028/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com