【问题标题】:regex remove number between line breaks正则表达式删除换行符之间的数字
【发布时间】:2016-12-31 05:15:37
【问题描述】:

我有一个巨大的代码,在几行之间有数字: 例如:

code code code
7362
code code code
code code code
code code code
63
code code code
...

我想去掉这个数字,代码之间变成:

code code code
code code code
code code code
code code code
code code code

我试过了:

$a = preg_replace("/(s[0-9,]+s)/", "", $a);

但它不起作用。

/(s[0-9,]+s

【问题讨论】:

标签: php regex


【解决方案1】:

你忘记转义's'

$a = preg_replace("/(\s[0-9,]+\s)/", "", $a);

而且 9 点后昏迷是没有必要的。

【讨论】:

  • 但是,\s[0-9,]+\s 将删除换行符,并且不会在字符串的开头/结尾找到数字。实际上,这将删除任何地方的数字,而不仅仅是数字字符串。
【解决方案2】:

这将删除所有数字:

$words = preg_replace('/[0-9]+/', '', $words);

【讨论】:

    【解决方案3】:

    删除仅数字的最佳方法是使用

    '~^\d+$\R*~m'
    

    regex demo

    模式详情

    • ^ - 行首(因为 ~m MULTILINE 修饰符使 ^ 匹配行首,而不是字符串)
    • \d+ - 1 位或多位数字
    • $ - 行尾
    • \R* - 零个或多个换行符(任何序列,如 LF、CR、CR+LF)。

    PHP demo:

    $str = "code code code\n7362\ncode code code\ncode code code\ncode code code\n63\ncode code code\n..."; 
    $result = preg_replace('~^\d+$\R*~m', '', $str);
    echo $result;
    

    【讨论】:

    • 如果您有任何与当前问题相关的其他问题,请随时发表评论。
    【解决方案4】:

    我试过这对我有用。

    /[1-9][0-9]*/g
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-01
      • 2017-06-20
      • 1970-01-01
      • 2022-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多