我需要一种通过regex进行优化的方法,下面是我正在使用的字符串:

rr='JA=3262SGF432643;KL=ASDF43TQ;ME=FQEWF43344;JA=4355FF;PE=FDSDFHSDF;EB=SFGDASDSD;JA=THISONE;IH=42DFG43;'

我只想取JA=4355FF之前的JA=THISONE,所以我这样做了:
aa='.*JA=([^.]*)JA=THISONE[^.]*'
aa=re.compile(aa)
print (re.findall(aa,rr))

我得到:
['4355FF;PE=FDSDFHSDF;EB=SFGDASDSD;']

我的第一个问题是在字符串的适当部分进行缓慢搜索(因为我要搜索的字符串太大,通常JA=THISONE在字符串的末尾)
第二个问题是我没有得到4355FF但是所有的字符串直到JA=THISONE
有人能帮我优化我的正则表达式吗谢谢您!

最佳答案

i.考虑使用字符串搜索而不是正则表达式:

thisone_pos = rr.find('JA=THISONE')
range_start = rr.rfind("JA=", 0, thisone_pos) + 3
range_end = rr.find(';', range_start)
print rr[range_start:range_end]

二。考虑翻转字符串并反向构造正则表达式:
re.findall(pattern, rr[::-1])

关于python - Python正则表达式-更快的搜索,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19635526/

10-09 19:19