V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
uti6770werty
V2EX  ›  问与答

请教这个正则表达式应该如何实现(可能存在)

  •  
  •   uti6770werty · Feb 12, 2020 · 2023 views
    This topic created in 2280 days ago, the information mentioned may be changed or developed.

    如下字符:

    $12-16$
    $  88-99$
    $ 12-67  $
    $9-0]$
    

    我写的这个正则:

    \$\d+.*-\d+.*$
    

    只能匹配
    $12-16$
    $9-0]$

    最终目的是想匹配两个$号之间的内容(包括$本身),
    但有些比较特殊,开始$之后,也许可能存在空白,如:$ 88-99$,
    结束的$之前,也许也有空白,如:$ 12-67 $
    这种有空白的“或许”的正则,写不出来,麻烦各位高手赐教,谢谢!

    10 replies    2020-02-13 00:47:55 +08:00
    daquandiao2
        1
    daquandiao2  
       Feb 12, 2020
    \$\s*\d+-\d+.*\$
    asionbo
        2
    asionbo  
       Feb 12, 2020
    这样的?
    \$.*\$
    Hyseen
        3
    Hyseen  
       Feb 12, 2020
    \$.*\$
    b1iy
        4
    b1iy  
       Feb 12, 2020
    不是很确定你完整的需求。\s 是匹配空格,\S 是匹配非空格,不确定空格数量就可以 \s* ,你自己推导下
    具体参考 https://deerchao.cn/tutorials/regex/regex.htm 实现
    uti6770werty
        5
    uti6770werty  
    OP
       Feb 12, 2020
    谢谢各位~

    "\$.*\$" 的方式比较粗暴,会误匹配(像:$测试文字$),所以我才需要增加\d 和匹配有“-”符号来降低误匹配的可能性

    @b1iy \s*也不适合,有情况是:没有空格,如上面的$12-16$,这个是紧凑型了

    就是有\s*或者没有\s,两种情况都要兼顾。。。
    uti6770werty
        6
    uti6770werty  
    OP
       Feb 12, 2020
    或的关系,按教学网页,应该是|符号
    尽管我试过用
    \$[\s*|]\d+.*-\d+.*$
    \$(\s*|)\d+.*-\d+.*$
    始终不成。。。
    eason1874
        7
    eason1874  
       Feb 12, 2020
    你这长篇大论都没说到关键点,我看你帖子描述跟上面回复一样,误以为你匹配$$之间所有内容,看你回复才发现你要匹配的不包括中文。

    你应该说明$$可能有什么内容,允许什么内容,不允许什么内容,要匹配什么内容。给你几个例子:

    一、$$之间包括空格、数字: /\$(?:\s|[0-9])+\$/
    二、$$之间包括空格、-、数字: /\$(?:\s|\-|[0-9])+\$/
    三、$$之间包括空格、-、]、数字: /\$(?:\s|\-|\]|[0-9])+\$/

    自己举一反三吧。
    lysS
        8
    lysS  
       Feb 12, 2020 via Android
    禁用贪婪
    mxalbert1996
        9
    mxalbert1996  
       Feb 13, 2020 via Android
    你连你到底相匹配什么都不说清楚让我们猜呢?
    mxalbert1996
        10
    mxalbert1996  
       Feb 13, 2020 via Android
    提示一下,匹配任意数量(包括 0 )空白字符用 \s* 就行
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1741 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 60ms · UTC 16:18 · PVG 00:18 · LAX 09:18 · JFK 12:18
    ♥ Do have faith in what you're doing.