Regex -丢弃字符串中以nonDecimal开头的任何单词

kdfy810k  于 2023-08-08  发布在  其他
关注(0)|答案(1)|浏览(111)

在这种情况下,我不想包括第一个元素“223”,有什么建议吗?

re.findall(pattern=r"[^\D][-+]?[0-9]*\.?[0-9]+(?:[eE][-+]?[0-9]+)?", string="        LComb_1_2_223  -4.00000000E+00  500000E+01  -1.09000000E-02  2.00E+00  22  5.23  ")

# out: ['223', '4.00000000E+00', '500000E+01', '1.09000000E-02', '0.00000000E+00']

字符串

vm0i2vca

vm0i2vca1#

您已经在\.?中设置了可选的小数点,如果您将其替换为\.,您将只得到带有小数点的数字:

import re

text = "        LComb_1_2_223  -4.00000000E+00  500000E+01  -1.09000000E-02  0.00000000E+00"
results = re.findall(pattern=r"[^\D][-+]?[0-9]*\.[0-9]+(?:[eE][-+]?[0-9]+)?", string=text)

print(results)  # ['4.00000000E+00', '1.09000000E-02', '0.00000000E+00']

字符串
编辑:基于你的评论,我把正则表达式改成了下面的,它在任何空格字符后面捕获一个组,有两个可选的组,小数和指数

import re
text = "        LComb_1_2_223  -4.00000000E+00  500000E+01  -1.09000000E-02  0.00000000E+00 233"
results = re.findall(pattern=r"\s([-+]?\d+(?:\.[0-9]+)?(?:[eE][-+]?\d+)?)", string=text)
print(results)  # ['-4.00000000E+00', '500000E+01', '-1.09000000E-02', '0.00000000E+00', '233']

相关问题