首页 文章

正则表达式 - 在字符串中查找特定数字

提问于
浏览
3

我整天都在正常表达中挣扎,无法找到解决方案 . 我试图在包含数字,分号,冒号和空格的字符串中找到一些特定的数字 .

为了我们的目的,让's say I' m寻找号码 1234

以下是几个应匹配的示例( Every line is a different string ):

1234
;1234;
1234 : 5678
;1234,3321

和不匹配的例子(因为它的数字不同):

;12345;
0123456

我目前的尝试:

[^(0-9*)]1234[^(0-9*)]

以下是Regex Tester与我的问题的永久链接:Regex Tester fiddle

3 回答

  • 2

    也许试试这个: ([^0-9]|^)1234([^0-9]|$) 在这种情况下,您不需要环视功能 .

    您可以使用它来更好地理解regexp . 它有一个很好的gui可视化模式 . Debuggex

  • 2

    如果你的味道支持lookahead and lookbehind,请使用:

    (?<!\d)1234(?!\d)
    

    对没有匹配的字符出现进行环视测试 . 负面观察仅在没有出现时接受 .

    如果它支持word boundaries

    \b1234\b
    

    词边界包括例如 . 空格和标点符号 .

    否则检查非数字字符并添加字符串开始和结束:

    (^|\D)1234($|\D)
    

    如果您的引擎甚至不支持 \d\D ,请将它们替换为 [0-9] 各自 [^0-9] .

  • 0

    这可能有效:

    .*[^0-9]*[1][2][3][4][^0-9]*.*
    

    这个怎么运作:

    .*             anything
    [^0-9]*        an optional character that is not a number
    [1][2][3][4]   "1234" done this way because it will be taken as a repeat count unless escaped
    [^0-9]*        an optional character that is not a number
    .*             anything
    

    字符串以“1234”开头或结尾并且没有其他字符可能存在问题 . 根据正则表达式的实现,可能不需要正面和背面的任何匹配 .

相关问题