我的代码:
r=[' 200 200 200 200 ', ' 3,50 3,50 3,50 3,50 ', ' 1000 1000 1000 1000 ', '1.000 1.000 1.000 1.000 ']
import regex
I=[]
p = regex.compile("^(?<=\s*)\S|(?<=\s{2,})\S")
for n in range(0,len(r)):
itemp = []
for m in p.finditer(r[n]):
itemp.append(m.start())
i.append(itemp)
这个正则表达式不捕捉r[2]中的第一个“1000”
我也试过这个正则表达式:
p = regex.compile("^\S|^(?<=\s+)\S|(?<=\s{2,})\S")
但这并没有抓住第一个数字。你知道吗
我做错什么了?你知道吗
除此之外,lookbehinds对我来说似乎过于复杂了。所需要的只是
至于找位置:
您应该使
^
成为lookback的一部分,这样它就不会被“消费”了:当您将其保留在外部时,字符串零宽度断言的开头(或只是一个“插入符号”)将锚定表达式,并在字符串的开头查找非空格(如果
1000....
与之不匹配,则会导致初始结果中缺少一部分)。你知道吗这里是RegexStorm的regex演示。你知道吗
请注意,
re
模块也可以用于捕获组:参见IDEONE demo
相关问题 更多 >
编程相关推荐