gpt4 book ai didi

C# regex 只匹配任意顺序的字符集一次

转载 作者:行者123 更新时间:2023-12-03 09:09:45 27 4
gpt4 key购买 nike

我需要以任意顺序匹配集合中字符的任意组合,但不能匹配重复的字符。该集合是“m,s,b,r,e,l,f,t”,例如

msb - valid
mbs - valid
m - valid
mmft - not valid (duplicate m)
mxel - not valid (x is not in set)

我用这个测试仪 http://regexstorm.net/tester

这是最接近的,但不会捕获所有订单组合

^(?:[m]{1})|(?:[n]{1})$

例如 nm 将不会被捕获。

感谢任何帮助,谢谢。

最佳答案

如果仅不允许连续重复(如 mmft 中),请使用此正则表达式

^(?!.*(.)\1)[msbrelft]+$

演示:https://regex101.com/r/11pGQB/1

如果不允许任何字符重复出现(例如在mftm中),请使用以下内容:

^(?!.*(.).*\1)[msbrelft]+$

演示:https://regex101.com/r/q1bpMr/1

这两个正则表达式的关键点是重复检查后向:

  • 在第一种情况 (^(?!.*(.)\1)) 中,如果后面紧跟一个字符 ((.)\1)。

  • 在第二种情况 (^(?!.*(.).*\1)) 中,如果某个字符在其他序列之后重复 ((.).*\1).

关于C# regex 只匹配任意顺序的字符集一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43498582/

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