【发布时间】:2022-01-17 18:46:37
【问题描述】:
我想在我的文本中添加一个分隔符 -- $ -- 到每个包含指数 -- ^ -- 运算符的句子,但我不想在以我的指数中包含一个反斜杠。我尝试使用((?!\\\w+)\w+)\^(\w+) 正则表达式没有成功。
| input | what I want | what I got |
|---|---|---|
| foo^2 | $foo^2$ | $foo^2$ |
| \foo^2 | \foo^2 | $foo^2$ |
我的代码:
from re import sub
sentence = """foo^2
\bar, \bar^3
bar
\foo
\bar
foo^5
"""
sub(r'((?!\\\w+)\w+)\^(\w+)', '$\\1^\\2$', sentence)
给出以下输出:
'$foo^2$ \n \x08ar, \x08$ar^3$ \nbar \n\x0coo \n \x08ar\n $foo^5$ \n'
【问题讨论】:
-
反斜杠总是在字符串的开头吗?
-
是的,@WaisKamal
-
你需要使用否定的look-behind断言,并且还要匹配单词边界:例如
r'(?<!\\)\b(\w+)\^(\w+)\b'。 (请注意,您的示例字符串必须是 原始字符串,否则它将包含嵌入式控制字符,例如\b和\f)。 -
就是这样,@ekhumoro。
-
@LucasAlmeidaCarotta 还有一点:输入可以包含转义的反斜杠吗?如果是这样,那可能需要特殊处理。 (例如,
\\foo^2之类的东西)。
标签: python regex regex-lookarounds