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