python - 类似字符串的正则表达式
问题描述
我有一个字符串可以是:
X=Y
或者
X
这里 X 和 Y 可以是任何包含字母的单词。
我希望当字符串是X=Y
X 应该在第 1 组和 Y 在第 2 组
但是当字符串是X
那么 X 应该在第 2 组中。
到目前为止,我只能得到这个:
(\w+)=(\w+)
什么应该是正确的正则表达式?
解决方案
要匹配字母,您需要使用[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
- 字符串的最后($
匹配字符串位置的结尾)。
推荐阅读
- ios - Chrome Service Worker iOS 支持
- javascript - 延迟解析 Javascript - GTMetrix.com
- r - 根据日期聚合变量
- php - PHP json_decode() 不适用于以 0 开头的数字(如 0123456)
- spring-integration - Spring集成文件编写示例
- java - Hibernate 5.2.17 不回滚失败的事务
- sql - SQL查询以查找不同行之间的文本差异
- angular - 错误:找不到“AppModule”的 NgModule 元数据。在另一台机器上
- amazon-web-services - 使用 SSL CloudFront 的多个域
- r - 在行上分配货币数量,直到它耗尽