regex - 如何拆分第一次出现的字符
问题描述
我有这行:
POS_17=78n(18n,100n)n
WOS<8s(4s,5s)s=Pos:D4 Facebook F:5/8 Rack
我对这个正则表达式有如下问题:
^\s*([^_]+)(_\w+)?([<>=])(.*)\s*$
如果在同一行中有 = 或 < 或 >,则问题是这些字符中的最后一个出现 < > =
。我的问题在第二行。你可以检查一下https://regex101.com/r/PDACQl/1
预期结果 :
**For First line :**
POS_17=78n(18n,100n)n
Group 1. POS
Group 2. _17
Group 3. =
Group 4. 78n(18n,100n)n
**For second line :**
WOS<8s(4s,5s)s=Pos:D4 Facebook F:5/8 Rack
Group 1. WOS
Group 3. <
Group 4. 8s(4s,5s)s=Pos:D4 Facebook F:5/8 Rack
解决方案
您可以将字符 < > 和 = 添加到第一个否定字符类以不匹配它们。
您可以省略\s*
最后的 ,因为它是可选的,而不是最后一个捕获组的一部分。
^\s*([^_<>=]+)(_\w+)?([<>=])(.*)$
^^^
推荐阅读
- python - 枚举类字段更改时引发 ValueError
- php - 连接命名空间类静态变量的最佳方法是什么?
- apache-spark - Scala Spark 的 dataframe.limit(n) 导致改组
- python - Python如何扩展自定义模型列表
- dart - 如何使用颤振以编程方式打开谷歌日历应用程序
- git - npm install remote repository:获取失败,状态码 401
- sql - 分隔符可变时复制
- python - ValueError:5 次尝试提交事务失败
- python - 我可以让 pip 安装 32 位版本的软件包吗?
- symfony - FOSUserBundle 自定义登录流程