首页 > 解决方案 > 类似字符串的正则表达式

问题描述

我有一个字符串可以是:

X=Y 

或者

X

这里 X 和 Y 可以是任何包含字母的单词。

我希望当字符串是X=YX 应该在第 1 组和 Y 在第 2 组

但是当字符串是X那么 X 应该在第 2 组中。

到目前为止,我只能得到这个:

(\w+)=(\w+)

什么应该是正确的正则表达式?

标签: pythonregexregex-group

解决方案


要匹配字母,您需要使用[a-zA-Z](匹配任何 ASCII 字母) 或[^\W\d_](这匹配任何 Unicode 字母),而不是\w在 Python 3.x 中默认匹配字母、数字或下划线以及更多字符。

你需要

^(?:([A-Za-z]+)=)?([A-Za-z]+)$

或者

^(?:([A-Za-z]+)=)?([A-Za-z]+)\Z

查看正则表达式演示

细节

  • ^- 字符串的开始
  • (?:([A-Za-z]+)=)?- 一个可选的非捕获组,匹配 1 次或 0 次出现:
    • ([A-Za-z]+) - 第一组:一个或多个字母
    • =- 一个=字符
  • ([A-Za-z]+)- 第 2 组:一个或多个字母
  • \Z- 字符串的最后($匹配字符串位置的结尾)。

推荐阅读