正则表达式不提供完全匹配

2024-10-03 09:09:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在正则表达式的字符串中找到这个。你知道吗

  : [J, BASIC]
  ? [CINTERMEDIATE]
  : [D,MEDIUM]

第一个字符可以是“:”或“?” 然后是空白,然后是方括号 方括号内有两个文本块,用逗号和/或空格分隔。逗号或空格可能存在,也可能不存在

这是我写的找到这个的东西

regex = re.compile('[:|?\s[\w[,\s]?\w]]+')

但它只能找到

'C]'
'E]'
'M]'

Tags: 字符串文本rebasic字符空白regexmedium
3条回答
[:?]\s+\[[^, \]]*[, ]?[^\]]*\]

你可以试试这个图案。看到了吗演示。你知道吗

https://regex101.com/r/bN8dL3/8#python

正则表达式没有将[作为文本处理。。它们被视为特殊字符(字符集)

您可以使用以下选项:

[:?]\s*\[\w+(\s*,\s*)?\w+\]

说明:

  • [:?]第一个字符可以是“:”或“?”你知道吗
  • \s*\[然后是一个空格,然后是方括号
  • \w+(\s*,\s*)?\w+方括号内有两个文本块,用逗号和/或空格隔开(可选逗号和空格)
  • \]右括号

DEMO

编辑:如果要捕获匹配,可以使用:

([:?]\s*\[\w+(?:\s*,\s*)?\w+\])
[:?]\s\[[^\]]+?\]

Regular expression visualization

Debuggex Demo

相关问题 更多 >