ruby - 将匹配不以“km”结尾的字母和数字组合的正则表达式
问题描述
我是新来的,所以我会尽力而为。
我有一行包含不同汽车信息的文本。
65101km,轿车,手动,18131A,FWD,二手,5.5L/100km,丰田,凯美瑞,SE,{AC,加热座椅,加热后视镜,无钥匙进入},2010
我正在尝试编写一个正则表达式,它将匹配该行中不以“km”结尾的字母和数字的组合。汽车的序列号可能因一家汽车制造商而异。例如:
18FO724A、18131A、19BF723A
这些是来自不同车型的不同序列号。
我试过这个:
/((?:[a-zA-Z]+[0-9]+[^km]$|[0-9]+[a-zA-Z])[a-zA-Z0-9])/
但它不断返回 # 公里
65101公里
而我需要的答案是
18131A
任何帮助都可以。谢谢
解决方案
从您提供的示例中,您的序列号似乎将始终以数字开头并以字母结尾 - 如果这不是真的,请参阅我的评论并阅读将采取哪些措施来更好地帮助您。
这种模式应该有效:
/(\d+[a-z0-9]+[a-z](?<!km\b))(?:,|$)/i
这需要以下条件:
\d+
以至少一位或+
多位数字开头\d
[a-z0-9]+
后跟任何字母数字字符[a-z0-9]
,一次或多次+
(?<!km\b))(?:,|$)
断言字符串以逗号,
或字符串结尾结尾的负前瞻$
,但如果它出现在字母 km 之后,则不是(?<!km\b)
这使用单个捕获组(...)
,因此您不包括,
整个匹配项附带的逗号
推荐阅读
- java - Spring Boot 在创建名为“entityManagerFactory”的 bean 时出错
- reactjs - 下一个 JS 的 API 缓存
- spring - 将 Spring MVC 迁移到 Spring boot 2.2.6 - 未加载磁贴配置
- java - JavaFX 无法使用自定义类选择 ComboBox
- powershell - “互斥”比通过网络使用 .lock 文件更好的方法?
- javascript - 为什么克隆最后一个元素在 jQuery 中不起作用?
- node.js - Rest Api 使用单一搜索输入按产品、品牌等进行搜索
- javascript - Nodemailer 一直给我一个错误:“TypeError [ERR_INVALID_ARG_TYPE]:“chunk”参数必须是字符串类型或......”
- python - 我有嵌套 dict 变量的列表,需要转换为 Json 对象的 dict 变量类型
- c - 遍历C中具有未知大小结构成员的结构数组