【问题标题】:java : regex to delete numbers [duplicate]java:正则表达式删除数字[重复]
【发布时间】:2020-11-16 11:06:46
【问题描述】:

我想从字符串中删除所有数字,除非它们粘在字母上。
例如:F5 45, AD12 应该变成:F5 , AD12
到目前为止,我已经做到了,这并不多......:

line.replaceAll("[0-9]+", ""))

如果你有任何想法... 谢谢

【问题讨论】:

  • 你可以匹配一个或多个数字,同时断言左边没有数字或字母(?<![\p{L}\d])\d+regex101.com/r/zX4WGB/1

标签: java regex


【解决方案1】:

\b 是“分词”的正则表达式。您可以查找精确的定义,但它可能会在这里做您想要的,因为空格和“字符串的开头或结尾”都算作分词,而且事物本身实际上并不匹配字符(因此,它不会删除那些空格),它会根据那里是否有断字字符来成功或失败。

因此:

line.replaceAll("\\b[0-9]+\\b", "");

应该完成它。

【讨论】:

  • 我看到的问题是数字以 34D 之类的字母结尾..你不会得到这些
  • @micpog90 这似乎是 OP 想要的,不是吗? 34D 不应该只变成 D。问题说“卡在一个字母上”,而不是“以字母为前缀”。
【解决方案2】:

如果我正确理解您的用例,它应该是这样的:

line.replaceAll("([^a-zA-Z]+)[0-9]+", "$1")

第一位匹配“除字母 a-z 之外的任何内容”,其余匹配数字。第二个参数保留匹配的第一个字符,因此我们不会从您的输入中删除任何空格或逗号。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-02
    • 1970-01-01
    • 1970-01-01
    • 2020-04-24
    • 2010-10-23
    • 2013-01-07
    • 2013-01-08
    相关资源
    最近更新 更多