V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
s609926202
V2EX  ›  问与答

问个关于匹配命名规则的正则

  •  
  •   s609926202 · 2020-11-02 16:42:09 +08:00 · 752 次点击
    这是一个创建于 1482 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目标字符:10nF/50V/X7R/10%(GRM155R71H103KA01D 村田)
    我写的正则:^[a-zA-Z0-9/%].*?([^ ]+[ ]\S+)$

    经测试( https://www.phpliveregex.com/#tab-preg-match-all ),有以下问题:

    1. 删除尾部括号依然可以匹配到
    2. 尾部新增个括号也可以匹配到

    请问,如何匹配规则为:参数(型号 品牌) 这样的命名方式?只允许一对括号,参数可有可无,括号可有可无。。

    5 条回复    2020-11-03 18:48:52 +08:00
    s609926202
        1
    s609926202  
    OP
       2020-11-02 16:58:28 +08:00
    改进了一下:^[\S]*?([^ ]+([ ]\S+)?)$
    问题依然存在
    lxilu
        2
    lxilu  
       2020-11-02 23:53:29 +08:00 via iPhone
    括号要转义,括号内容要懒
    s609926202
        3
    s609926202  
    OP
       2020-11-03 09:16:18 +08:00
    @lxilu
    改进版:^([^ ()]+)(\(.*?\))$
    有个问题是多个括号也能匹配到,,,只想匹配一个括号
    lxilu
        4
    lxilu  
       2020-11-03 14:57:11 +08:00
    去掉$
    shequ2046
        5
    shequ2046  
       2020-11-03 18:48:52 +08:00
    哈哈,好奇大部分人是因为太菜所以没办法帮你,还是因为看出来你太菜而不愿帮你,还是说全部都是爬虫呢。。。
    给你个建议,regex 的基础中的基础的基础其实是找出规律(pattern),
    找不出规律的话一切都是徒劳。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2749 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 12:14 · PVG 20:14 · LAX 04:14 · JFK 07:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.