java - 字符串文字中的正则表达式

时间:2017-09-20 12:45:12

标签: java regex string replace

我正在尝试从字符串中删除某些内容:

"name" : "12345"

总是12345可以是任何数字,有没有办法用这样的方式做到这一点:

string.replace("\"name\":\"[0-9]\",", "")

这不起作用,我尝试了几件事,但没有任何作用。

谢谢你!

4 个答案:

答案 0 :(得分:2)

在数字部分后面添加+,以便正则表达式匹配任意长度的数字。仅[0-9]仅匹配1位数。

此外,空间怎么样?在您的示例中,您的代码中有空格,没有空格。您可以添加\\s*以匹配任何(包括无)空白区域。

string.replaceAll("\"name\"\\s*:\\s*\"[0-9]+\",", "")

您可以在Regex101上使用它。

Andy Turner的评论:您需要使用replaceAll代替replacereplace不会将第一个参数解释为正则表达式,但会尝试在字符串中找到该字符串。

答案 1 :(得分:1)

这将为你做到

string.replaceAll( "\"name\"\\s*:\\s*\"\\d+\"", "" ) 

示例:

final String string = "Some\"name\" : \"12345\"String";
System.out.println( string.replaceAll( "\"name\"\\s:\\s\"\\d+\"", "" ) 

将打印输出:

  

SomeString

它适用于任何数字

答案 2 :(得分:0)

替换“\”name \“:\”[0-9] \“至”\“name \”:\“[0-9] * \”“

答案 3 :(得分:0)

我试过像这样的正则表达式

String regex="\\w+:\\d+";
        String data = "name:12345";
        System.out.println(data.matches(regex));

输出为true,你可以试试这个。 \ w +匹配一个或多个单词字符,\ d +匹配一个或多个数字