# How to extract digits from a string in Java

By Atta Ur Rehman Shah (https://attacomsian.com/about). Published Feb 22, 2020. Topics: Java.
Canonical URL: https://attacomsian.com/blog/java-extract-digits-from-string

> A simple guide to learn how to extract digits from a string in Java.

There are various ways to extract digits from a string in Java. The easiest and straightforward solution is to use the regular expression along with the `String.replaceAll()` method.

The following example shows how you can use the `replaceAll()` method to extract all digits from a string in Java:

```java
// string contains numbers
String str = "The price of the book is $49";

// extract digits only from strings
String numberOnly = str.replaceAll("[^0-9]", "");

// print the digitts
System.out.println(numberOnly);
```

The above example will output `49` on the console. Notice the regular expression `[^0-9]` we used above. It indicates that replace everything except digits from 0 to 9 with an empty string. This is precisely what we need.

Alternatively, You can also use `\\D+` as a regular expression because it produces the same result:

```java
String numberOnly = str.replaceAll("\\D+", "");
```

The `replaceAll()` method **compiles** the regular expression every time it executes. It works for simple use cases but is not an optimal approach. You should rather use the `Pattern` class to compile the given regular expression into a pattern as shown below:

```java
Pattern pattern = Pattern.compile("[^0-9]");
String numberOnly = pattern.matcher(str).replaceAll("");
```
