第一次使用正则表达式,尽管 stackoverflow 中已经有很多例子,但无法让它工作。
如何提取括号内字符串中的整数?
Example:
dijdi[d43] d5[55++][ 43] [+32]dm dij [ -99]x
会回来
[43, 32, -99]
'+'
and '-'
如果它位于括号的开头,则可以,但如果位于中间或末尾,则不行。如果'+'
标志在开头,不应该被考虑。(+54 --> 54)
一直在尝试:
re.findall('\[[-]?\d+\]',str)
但它没有按照我想要的方式工作。
如果您需要在比赛中失败[ +-34 ]
(即,如果有一个,则不需要提取负数+
在它之前)你将需要使用
\[\s*(?:\+|(-))?(\d+)\s*]
当获得匹配时,连接组 1 和组 2 值。看这个正则表达式演示.
Details
-
\[
- a [
char
-
\s*
- 0+ 空格
-
\+?
- 可选的+
char
-
(-?\d+)
- 捕获组1(实际输出re.findall
): 可选-
和 1+ 位数字
-
\s*
- 0+ 空格
-
]
- a ]
char.
在Python中,
import re
text = "dijdi[d43] d5[55++][ 43] [+32]dm dij [ -99]x"
numbers_text = [f"{x}{y}" for x, y in re.findall(r'\[\s*(?:\+|(-))?(\d+)\s*]', text)]
numbers = list(map(int, numbers_text))
# => [43, 32, -99] for both
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)