我正在学习并尝试对字符串进行正则表达式。
这是 "DBZ:00000*{6000}/ONE/REFFERRARO REF:FINE DOGS*"
我试图找到所有REF
在这个字符串。所以我用了这个:
import re
doom = 'REF'
boom = "DBZ:00000*{6000}/ONE/REFFERRARO REF:FINE DOGS*"
# print(i)
# print('Found "%s" in "%s" ->' % (i, boom), end='')
print(re.findall(r"\b" + doom + "*", boom))
if re.search(doom, boom):
print("found")
输出:
['REFF','REF']
我在这里没有获得确切的REF,我想做的就是检查“ REF”旁边是否有任何字符
喜欢: "REFFERRARO" -> Here next to "REF" is "F"
"REF:FINE" -> Here next to "REF" is ":"
因此,如果我发现"REF"
除了":"
要添加的内容,就":"
在旁边找到其他内容"REF"
。
例:
String: "DBZ:00000*{6000}/ONE/REFFERRARO REF:FINE DOGS*"
Output: "DBZ:00000*{6000}/ONE/REF:FERRARO REF:FINE DOGS*"
更新:
正如我所说的,.sub得到了:
print(re.compile('REF').sub("REF:", boom))
输出:
"DBZ:00000*{6000}/ONE/REF:FERRARO REF::FINE DOGS*"
新的更新:
尝试了一下并奏效了(但是我不认为这是有效的,因为如果有n个“ REFFERRARO”,那么):
print(re.compile('REF').sub("REF:", boom,count=1))
您的'\bREF*'
查找模式是寻找一个词的边界,然后是'REF'
在何处'F'
限定为0到n次。那就是你得到的:'REF'
和'REFF'
你可能要r'\bREF.*\b'
。
要代替您的工作:
:
import re
pattern = r'\bREF([^:])' # REF followed by NOT a : - capture the single char
# \1 inserts the single char after REF without : again
correct = re.sub(pattern, r'REF:\1', "DBZ:00000*{6000}/ONE/REFFERRARO REF:FINE DOGS*")
print(correct)
输出:
DBZ:00000*{6000}/ONE/REF:FERRARO REF:FINE DOGS*
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句