Python Regex - 匹配一个字符而不消耗它

标签 python regex

我想转换以下字符串

“为了“胜利””,“走向”之路

“为了”“The”“赢”,”Way“”“去”“走”

简单的正则表达式是

str2 = re.sub(r'(?<!,|^)"(?=\w)|(?<=\w)"(?!,|$)', '""', str1,flags=re.MULTILINE)

即,将引号加倍

  1. 后跟一个字母但前面没有逗号或行首
  2. 前面有一个字母但后面没有逗号或行尾

问题是我正在使用 python,它的正则表达式引擎不允许在 lookbehind 构造中使用 OR 运算符。我得到错误

sre_constants.error: look-behind requires fixed-width pattern

我正在寻找的是一个正则表达式,它将用 '""' 替换 'The' 和 'To' 周围的 '"'。 我可以使用以下正则表达式(提供给 another question 的答案)

\b\s*"(?!,|[ \t]*$)

但这会占用“The”和“To”之前的空间,我得到以下内容

"For""The""Win","Way""To""Go"

是否有解决方法,以便我可以将“The”和“To”两边的引号加倍,而不会消耗它们之前的空格?

最佳答案

与其说前面没有逗号或行首,不如说前面有非逗号字符:

r'(?<=[^,])"(?=\w)|(?<=\w)"(?!,|$)'

关于Python Regex - 匹配一个字符而不消耗它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20118193/

相关文章:

php - 查找分隔符之间的所有匹配项

regex - 匹配语法问题

python - 从 IPython 复制代码,不带前导三点

python - 如何处理通过将isbnlib.meta与 Pandas 一起应用返回的错误

python - virtualenv 不创建 PYTHONPATH/pip 安装包不起作用

python - 如何使用正则表达式删除特定空格。

regex - 使用正则表达式检查字符串中是否有数字

python - spacy.lang.en 和 load ('en' ) 有什么区别?

python - KMeans是否在sklearn中自动归一化特征

java - java中是否有任何正则表达式可以仅查找字符串中的转义字符?