gpt4 book ai didi

python - 正则表达式匹配字符序列和仅一种类型的符号

转载 作者:行者123 更新时间:2023-12-03 19:19:30 24 4
gpt4 key购买 nike

我有一个用于匹配字符序列的正则表达式。我希望它仅在使用一种类型的分隔符(空格、“/”或“-”)而不是所有分隔符的组合时匹配。

^(([1-9]|1[0-3]|A|J|Q|K|a|j|q|k)(C|D|H|S|c|d |h|s))(|\-|\/)(([1-9]|1[0-3]|A|J|Q|K|a|j|q|k)(C|D| H|S|c|d|h|s))( |\-|\/)(([1-9]|1[0-3]|A|J|Q|K|a|j|q| k)(C|D|H|S|c|d|h|s))( |\-|\/)(([1-9]|1[0-3]|A|J|Q|K |a|j|q|k)(C|D|H|S|c|d|h|s))( |\-|\/)(([1-9]|1[0-3]| A|J|Q|K|a|j|q|k)(C|D|H|S|c|d|h|s))

例如我希望它匹配:

as/3d/0S/Td/13C

但不是:

As/3d-QS/Ad/13C

或者:

As-2d QS/Td 13C

最佳答案

你可以首先将正则表达式简化很多,这样会更具可读性

  • (C|D|H|S|c|d|h|s) -> [CDHScdhs]
  • ([1-9]|1[0-3]|A|J|Q|K|a|j|q|k) -> ([1-9 ]|1[0-3]|[AJQKajqk])
  • ( |\-|\/) -> [\/-]

然后您可以使用反向引用来确保使用相同的分隔符,它代表要使用的组的索引,简化后它是我的正则表达式中的组2 take a look

此外,由于所有部分都是相同的,您可以简化

^([1-9]|1[0-3]|[AJQKajqk])[CDHScdhs]([ \/-])(([1-9]|1[0-3]|[AJQKajqk])[CDHScdhs]\2?)+$

但是设置re.IGNORECASE标志,您可以删除大写字母

^([1-9]|1[0-3]|[ajqk])[cdhs]([ \/-])(([1-9]|1[0-3]|[ajqk])[cdhs]\2?)+$

==> FINAL REGEX

关于python - 正则表达式匹配字符序列和仅一种类型的符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60799713/

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