gpt4 book ai didi

Python,正则表达式-如何匹配第二组,仅当第一组匹配时

转载 作者:行者123 更新时间:2023-12-01 07:43:57 25 4
gpt4 key购买 nike

输入:

2SASKS6SJSQSOS

预期输出:

2S AS KS 6S JS QS

我的代码:

import re

row = input()

pattern = r"([1]?[0-9]?[JQKA]?)([SHDC])"

result = ''

for (first, second) in re.findall(pattern, row):
if first and second:
result += first + second + ' '

print(result)

所以目前它有效,因为这个检查发挥了魔力:

if first and second:

如果没有这个检查,它会返回:

2S AS KS 6S JS QS S 

因为它匹配第二组。

我想在正则表达式中执行此操作,而不是使用 if 检查,这可能吗?检查第一组是否匹配,然后匹配第二组?

最佳答案

您可以添加 lookahead确保有数字或 JQKA 字母:

import re
row = '2SASKS6SJSQSOS'
pattern = r"(?=[0-9JQKA])(1?[0-9]?[JQKA]?)([SHDC])"
result = [x.group() for x in re.finditer(pattern, row)]
print(result) # => ['2S', 'AS', 'KS', '6S', 'JS', 'QS']

甚至

result = re.findall(r"(?=[0-9JQKA])1?[0-9]?[JQKA]?[SHDC]", row)

请参阅Python demo

它之所以有效,是因为第二组模式与第一组中匹配的模式不重叠。

请参阅regex graph :

enter image description here

详细信息

  • (?=[0-9JQKA]) - 需要 ASCII 数字的正向前瞻,JQ KA 紧邻当前位置的右侧
  • 1? - 可选的 1
  • [0-9]? - 可选的 ASCII 数字
  • [JQKA]? - 字符类中的可选字母:JQKA
  • [SHDC] - SHDC信。

关于Python,正则表达式-如何匹配第二组,仅当第一组匹配时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56556100/

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