Home > Mobile >  Regex: Get all instances and variations
Regex: Get all instances and variations

Time:12-22

So, I'm trying to get these different scenarios:

  1. square brackets with numbers inside e.g. [1] or [1111] or [1.2]
  2. number 1 (above) followed by a colon e.g. [1]: or [1111]:
  3. number 2 (above) followed by any length of numbers e.g. [111]:123
  4. number 3 (above) followed by a space(s) and then numbers e.g. [111]: 27

Test string:

time sheets..."[8]: 27  The ending sm testing [21] [2222] [22], [222]:22:

I want to replace all matches with an empty string

Result:

time sheets..."  The ending sm testing , :

My current pattern:

\[(.*?)\](?::?|:[0-9] ?)

CodePudding user response:

You can use

\[(\d (?:\.\d )?)]:?(?:\s*(\d (?:\.\d )?))?

See the regex demo.

Details:

  • \[ - a [ char
  • (\d (?:\.\d )?) - Group 1: an int or float number
  • ] - a ] char
  • :? - an optional : char
  • (?:\s*(\d (?:\.\d )?))? - an optional sequence of
    • \s* - zero or more whitespaces
    • (\d (?:\.\d )?) - Group 2: an int or float number

Note: If the last number can only occur after a :, you need to slightly amend the above regex:

\[(\d (?:\.\d )?)](?::(?:\s*(\d (?:\.\d )?))?)?

where the :?(...)? part is converted to (:(...)?)?.

See the regex demo.

  • Related