fork download
  1. import re
  2.  
  3. pattern = r"(?<=\()\d+(?:\.\d+)?(?=%\))|\d+(?:\.\d+)?(?=\s*\[[^][]*])"
  4. strings = ['73 (1.40%)', '38 (1.55%)', '27 (2.17%)', '32 (1.46%)', '10 (1.46%)', '11 (1.04%)', '11 (1.41%)', '7 (1.34%)', '4 (1.24%)', '28 (1.27%)', '750 (14.41%)', '381 (15.54%)', '182 (14.60%)', '313 (14.27%)', '4.10 [3.73 - 4.45]', '4.08 [3.70 - 4.42]', '4.13 [3.77 - 4.47]', '4.13 [3.78 - 4.47]', '4.07 [3.70 - 4.42]', '4.07 [3.70 - 4.43]', '4.07 [3.70 - 4.40]', '4.09 [3.73 - 4.42]', '4.03 [3.63 - 4.40]', '4.10 [3.70 - 4.47]']
  5. for val in strings:
  6. match = re.search(pattern, val)
  7. print(match)
Success #stdin #stdout 0.02s 9524KB
stdin
Standard input is empty
stdout
<re.Match object; span=(4, 8), match='1.40'>
<re.Match object; span=(4, 8), match='1.55'>
<re.Match object; span=(4, 8), match='2.17'>
<re.Match object; span=(4, 8), match='1.46'>
<re.Match object; span=(4, 8), match='1.46'>
<re.Match object; span=(4, 8), match='1.04'>
<re.Match object; span=(4, 8), match='1.41'>
<re.Match object; span=(3, 7), match='1.34'>
<re.Match object; span=(3, 7), match='1.24'>
<re.Match object; span=(4, 8), match='1.27'>
<re.Match object; span=(5, 10), match='14.41'>
<re.Match object; span=(5, 10), match='15.54'>
<re.Match object; span=(5, 10), match='14.60'>
<re.Match object; span=(5, 10), match='14.27'>
<re.Match object; span=(0, 4), match='4.10'>
<re.Match object; span=(0, 4), match='4.08'>
<re.Match object; span=(0, 4), match='4.13'>
<re.Match object; span=(0, 4), match='4.13'>
<re.Match object; span=(0, 4), match='4.07'>
<re.Match object; span=(0, 4), match='4.07'>
<re.Match object; span=(0, 4), match='4.07'>
<re.Match object; span=(0, 4), match='4.09'>
<re.Match object; span=(0, 4), match='4.03'>
<re.Match object; span=(0, 4), match='4.10'>