Python 任意字符的正则表达式

Python 任意字符的正则表达式,python,regex,Python,Regex,假设我有一个由任何符号组成的文本,比如: string=1234abdchdj星期上午十时*&() 我想用正则表达式查找字符bi-grams,以获得如下输出: 12,23,34,ab,bd,… 实际上,我使用的是python和regex: bigrams=re.findall(“(?=(\S\S))”,string) 但这给了我错误的输出,因为它遗漏了字符,实际上给了我所需的bi图的一半: 12,34,ab,dc,… 希望我说得够清楚,提前谢谢你你可以试试: s = 'abcdef' for i

假设我有一个由任何符号组成的文本,比如:

string=1234abdchdj星期上午十时*&()

我想用正则表达式查找字符bi-grams,以获得如下输出:

12,23,34,ab,bd,…

实际上,我使用的是
python
regex

bigrams=re.findall(“(?=(\S\S))”,string)

但这给了我错误的输出,因为它遗漏了字符,实际上给了我所需的bi图的一半:

12,34,ab,dc,…

希望我说得够清楚,提前谢谢你

你可以试试:

s = 'abcdef'
for i in range(len(s)-1):
    print(s[i:i+2])
或者更好:

s = 'abcdef'
a = ''
for b in s:
    if a:
        print(a+b)
    a = b

另一种选择是使用,这可能是最适合做这件事的方法

string=“1234abdchdj星期上午十时*&()"
对于zip中的a,b(string,string[1:]):
印刷品(a、b)
根据要对最后一个字符执行的操作
,您还可以使用:

从itertools导入zip\u
对于zip_中最长的a、b(字符串,字符串[1:],fillvalue=“-”):
印刷品(a、b)
将打印与在末尾添加包含
)-
的行之前相同的内容

如果您需要节省一点内存,您甚至可以使用:

从itertools导入islice
string=“1234abdchdj星期上午十时*&()"
对于zip中的a,b(字符串,islice(字符串,1,无)):
印刷品(a、b)

经典切片
[1://code>创建第二个数组,而这将在同一数组上创建迭代器。但是,除非您真的需要保存此内存,否则我将坚持使用
string[1://code>

如果不是不可能的话,这将非常困难,因为您正试图使用正则表达式来解决它不打算解决的问题。您可以在python的一行代码中非常清晰地完成这项工作


ans=[x[i:i+2]表示i在范围(0,len(x)-1,2)]

这将更容易使用for循环,有什么原因需要re吗?是的,我确实在循环,并且工作正常。然后我开始使用正则表达式,我发现这是我能做的最干净的事情。如果你真的想使用re,我想你可以使用上面的结果,只打印偶数的结果,所以你不需要?这些比赛缺少什么?@第四鸟谢谢,我不知道为什么我的系统会给我这个输出。也许代码的另一部分与此相关,但我没有意识到。