用于匹配和替换模式中字符的正则表达式
Regex to match and replace a character in a pattern
我想用 "fi"
替换字符串中的字符 "?"
。
我可以为此编写一个通用的 str 替换。但是我想替换“?”仅当它出现在两个 A-Za-z 字符之间并避免其余
例如,"Okay?"
应该是 "Okay?
" 而不是 "Okayfi"
但是
Modi?es 应该是 Modifies 因为它有 ?在中间
我尝试了什么?
sentence = re.sub(r"(\?)\b", "fi", sentence)
请看这里。
https://regexr.com/3nvk3
似乎在正则表达式中工作正常。但在代码中效果不佳。我做错了什么吗?
这里最好的方法是找到带fi
ligature的原文,然后用适当的编码读入。
否则,您将不得不使用一些变通方法。
您可以使用 (?<=[a-zA-Z])
/ (?=[A-Za-z])
环视:
sentence = re.sub(r"(?<=[a-zA-Z])\?(?=[a-zA-Z])", "fi", sentence)
见regex demo。 (?<=[a-zA-Z])
正后向匹配紧接 ASCII 字母之后的位置,(?!=[A-Za-z])
正向后向匹配紧接 ASCII 字母之前的位置。
或者,您也可以使用带反向引用的捕获组:
sentence = re.sub(r"([a-zA-Z])\?([a-zA-Z])", r"fi", sentence)
参见 another regex demo。请注意,</code> 引用第一个 <code>([a-zA-Z])
组捕获的值,</code> 引用第 2 组(<code>([a-zA-Z])
)捕获的值。
我想用 "fi"
替换字符串中的字符 "?"
。
我可以为此编写一个通用的 str 替换。但是我想替换“?”仅当它出现在两个 A-Za-z 字符之间并避免其余
例如,"Okay?"
应该是 "Okay?
" 而不是 "Okayfi"
但是
Modi?es 应该是 Modifies 因为它有 ?在中间
我尝试了什么?
sentence = re.sub(r"(\?)\b", "fi", sentence)
请看这里。 https://regexr.com/3nvk3
似乎在正则表达式中工作正常。但在代码中效果不佳。我做错了什么吗?
这里最好的方法是找到带fi
ligature的原文,然后用适当的编码读入。
否则,您将不得不使用一些变通方法。
您可以使用 (?<=[a-zA-Z])
/ (?=[A-Za-z])
环视:
sentence = re.sub(r"(?<=[a-zA-Z])\?(?=[a-zA-Z])", "fi", sentence)
见regex demo。 (?<=[a-zA-Z])
正后向匹配紧接 ASCII 字母之后的位置,(?!=[A-Za-z])
正向后向匹配紧接 ASCII 字母之前的位置。
或者,您也可以使用带反向引用的捕获组:
sentence = re.sub(r"([a-zA-Z])\?([a-zA-Z])", r"fi", sentence)
参见 another regex demo。请注意,</code> 引用第一个 <code>([a-zA-Z])
组捕获的值,</code> 引用第 2 组(<code>([a-zA-Z])
)捕获的值。