Ayush
Ayush

Reputation: 42440

Help me build a regex

I'm, quite frankly, completely clueless about Regular expression, more so building them. I am reading in a string that could contain any sort of combination of characters and numbers. What I know for certain is, somewhere in the string, there will be a number followed by % (1%, 13% etc.), and I want to extract that number from the string.

Examples are;

[05:37:25] Completed 21% //want to extract 21
[05:32:34] Completed  18000000 out of 50000000 steps (36%). //want to extract 36

I'm guessing I should be using either regex.Replace or regex.Split, but beyond that, I'm not sure. Any help would be appreciated.

Upvotes: 2

Views: 116

Answers (3)

Andy
Andy

Reputation: 8908

([\d]+)(%)

  • The parentheses will group the result.
  • The [\d]+ gives you any digit, repeated one or more times.
  • The "%" is just a literal.

You will need to make sure you extract only the first grouping. Also, you will need to be sure that there are no other instances of "<number>%" in the line.

I'm not entirely sure how to make this C# specific, but I'm sure you can figure that out. :-P Most likely you will need to use double-backslashes (\\) where I only had one.

Upvotes: 1

CanSpice
CanSpice

Reputation: 35788

The regex you want is:

/(\d+)%/

This will capture any number of digits immediately preceding a percentage sign.

Upvotes: 2

KeithS
KeithS

Reputation: 71565

You should be able to use something like "(\d+)%". This will match any number of consecutive digit characters, then a percent sign, and will capture the actual number so you can extract and parse it. Use this in Regex.Match(), and browse the Matches array of the result (I think it'll be the second element in the array, index 1).

If you need a decimal point, use "(\d+(\.\d+)?)%", which will match a string of digits, followed by a decimal point, then another set of digits.

Upvotes: 6

Related Questions