正则表达式未正确替换预期结果python
我有一本要替换的单词词典正则表达式未正确替换预期结果python,python,regex,Python,Regex,我有一本要替换的单词词典 preprocess_pattern = {r" AND ": r" & ", r" O\A ": r" O/A ", r" D\B ": r" O/A ", r" D/B ": r" O/A "} def preprocess_rules(text): for detect_patte
preprocess_pattern = {r" AND ": r" & ",
r" O\A ": r" O/A ",
r" D\B ": r" O/A ",
r" D/B ": r" O/A "}
def preprocess_rules(text):
for detect_pattern, replace_pattern in preprocess_pattern .items():
text = re.sub(detect_pattern, replace_pattern, str(text))
return text
preprocess_rules('AMAZON O\A MICROSOFT')
它给了我一个“AMAZON O\a MICROSOFT”的结果;用两个斜杠()。O\A没有替换为O/A。我想知道是什么导致了这个问题。这个
\
是一个元字符,所以你需要使用以下方法来转义检测模式
:
输出
AMAZON O/A MICROSOFT
从文件中:
在模式中转义特殊字符。如果您愿意,这很有用
匹配可能具有正则表达式的任意文字字符串
其中的元字符
字符
\
是正则表达式中的“转义”字符。例如:
匹配所有内容
匹配文字点\。
O\A
,这意味着:O
后跟literalA
,这就是它不匹配/替换的原因
现在,要匹配字符\
,您需要将其自身转义!将O\A
替换为O\\A
将起作用,因为它匹配:
O
:文字\\
\
A
D\B
执行相同的操作:
preprocess_pattern = {
r" AND ": r" & ",
r" O\\A ": r" O/A ",
r" D\\B ": r" O/A ",
r" D/B ": r" O/A "
}
这正是我想要的。谢谢!:)如果不使用正则表达式,为什么要在这里使用正则表达式?不要使用
re.sub
,请使用。更换。
preprocess_pattern = {
r" AND ": r" & ",
r" O\\A ": r" O/A ",
r" D\\B ": r" O/A ",
r" D/B ": r" O/A "
}