python - 我怎样才能做出忽略子集的展望?
问题描述
我正在尝试将字符串中的一些时尚尺寸隔离为两个单独的数据点。
IE。如果我得到 XXS/XS,我想隔离“XXS”,然后用第二个正则表达式得到“XS”。
为此,我刚刚使用了第 1 组
([A-Za-z0-9]+)
对于第一个尺寸和
(?:[^A-Za-z0-9()]+([A-Za-z0-9]+))
抓住第二个尺寸
但是,我遇到了一些新的奇怪组合,它们是一个值:
S1 - XXS/XS-S/M
在这种情况下,我将如何确保我的正则表达式将XXS/XS作为第一个值,将S/M作为第二个值,同时还确保我也将XXS作为第一个值,将XS作为第二个值(如果字符串)只是“XXS/XS”或 40 和 42 与“40-42”?
根本想不出最好的方法来做到这一点——希望一些聪明的人知道这样做的好方法!我可以系统明智地“仅”支持一个正则表达式来获取第一个值和第二个正则表达式来获取第二个值。我的系统只捕获第 1 组。
我的代码是基于 python 的,所以通常使用 pythex.org 来验证它是否可以在 python 中工作。
解决方案
我认为你可以使用
(?i)([a-z\d]+(?:[/-][a-z\d]+)?)[/-]([a-z\d]+(?:[/-][a-z\d]+)?)
请参阅正则表达式演示。
请注意,上面的正则表达式包含两个包含必要值的捕获组。
如果您需要始终获取 Group 1 ,那么您只需从上面的正则表达式中删除不必要的括号对并只保留一个捕获组。
细节
(?i)
- 不区分大小写的内联修饰符选项([a-z\d]+(?:[/-][a-z\d]+)?)
- 一个或多个字母数字字符,然后可选出现/
或-
后跟一个或多个字母数字字符[/-]
- 一个/
或-
([a-z\d]+(?:[/-][a-z\d]+)?)
- 第 2 组:(与第 1 组模式相同)。
推荐阅读
- c# - 使用带有 asp.net WebForms 的 google gmail API 创建草稿邮件(无库)
- r - 抓取网页的全部内容
- javascript - 为什么 useEffect 不是构造函数?
- reactjs - react-window children 作为 itemData 结果总是重新渲染
- reactjs - 想要在反应路由路由器中传递多个组件
- javascript - Laravel Mix 我无法访问我的 javascript 类
- java - 当 args[0] 不起作用时我该怎么办?JDA 生成器
- c# - EF Core标签映射UsingEntity,如何防止它重新插入现有关系?
- docker - 如何使用 dockerode 或 docker api 在多主机群上模拟“docker service ps”?
- javascript - 浏览器请求在 setInterval 中声明的相同文件