Python 如何检查一个字符串是否包含另一个被特殊字符包围的字符串?

Python 如何检查一个字符串是否包含另一个被特殊字符包围的字符串?,python,regex,special-characters,Python,Regex,Special Characters,我将举一个例子来说明我的意思: my_string1='005010X221A1~ST*835*0001~BPR*I*642.65*C*' 我想知道什么时候“BPR”两边都有特殊字符,我所说的特殊字符是指所有不是字母或数字的东西 我尝试了以下方法,但不起作用,因为这两个字符串都返回False,而string1需要True: res=False if re.search(r'(BPR(?<=/D)|BPR(?<=/W))&(BPR(?=\D)|BPR(?=\W))',my_

我将举一个例子来说明我的意思:

my_string1='005010X221A1~ST*835*0001~BPR*I*642.65*C*'
我想知道什么时候“BPR”两边都有特殊字符,我所说的特殊字符是指所有不是字母或数字的东西

我尝试了以下方法,但不起作用,因为这两个字符串都返回False,而string1需要True:

res=False

if re.search(r'(BPR(?<=/D)|BPR(?<=/W))&(BPR(?=\D)|BPR(?=\W))',my_string1) != None:

    res=True
res=False
如果重新搜索(r’(BPR(?搜索“BPR”,前跟字符不在集合中
[a-Za-z0-9]

r'[^A-Za-z0-9]BPR[^A-Za-z0-9]'
[1]中的
:导入re
在[2]中:重新搜索(“[^A-Za-z0-9]BPR[^A-Za-z0-9]”,“'005010X221A1~ST*835*0001~BPR*I*642.65*C*”)
出[2]:
在[3]中:重新搜索(“[^A-Za-z0-9]BPR[^A-Za-z0-9]”,“'005010X221A1~ST*835*0001~BPRI*642.65*C*”)
这里的正则表达式可以找到不是a到Z、a到Z或0到9后跟BPR等的字符。

以下是检测该字符的方法: 输出:

True
False
In [1]: import re

In [2]: re.search('[^A-Za-z0-9]BPR[^A-Za-z0-9]', '005010X221A1~ST*835*0001~BPR*I*642.65*C*')
Out[2]: <re.Match object; span=(24, 29), match='~BPR*'>

In [3]: re.search('[^A-Za-z0-9]BPR[^A-Za-z0-9]', '005010X221A1~ST*835*0001~BPRI*642.65*C*')
my_string1='005010X221A1~ST*835*0001~BPR*I*642.65*C*'
my_string2='005010X221A1~ST*835*0001~BPRI*642.65*C*'

def check(string):
    if not string[string.index('BPR')-1].isalnum() and not string[my_string1.index('BPR')+len('BPR')].isalnum():
        return True
    else:
        return False

print(check(my_string1))
print(check(my_string2))
True
False