regex 在Python中将字符串中的$..$替换为\(...\)[重复]

5t7ly7z5  于 2023-08-08  发布在  Python
关注(0)|答案(1)|浏览(111)

此问题在此处已有答案

How to replace only part of the match with python re.sub(6个答案)
21天前关闭
这里有一个字符串'Let $[C| d]$ be $星星$'。
如何用\(...\)替换上述字符串中的$..$。
结果应为'Let \([C| d]\)是\(星星\)'。
如何使用Python
我试过了

import re
x = 'Let $[C | d]$ be $Star$'
y = re.sub(r'\$.*?\$', r'\\(.*?\\)', x)

字符串
但不起作用
输出为'Let \(.?\)be \(.?\)'
参考:Regular Expression to find a string included between two characters while EXCLUDING the delimiters

wpcxdonn

wpcxdonn1#

它应该可以工作,下面是一个工作示例。

import re

string = 'Let $[C | d]$ be $Star$'

result = re.sub(r'\$(.*?)\$', r'\\(\1\\)', string)

print(result)

字符串
说明**:**
re.sub:这是Python中re模块提供的函数,用于执行正则表达式替换。
r'\$(.*?)\$':这是用于匹配字符串中$..$的所需模式的正则表达式模式。

  • \:这是一个转义字符,可确保以下$符号被视为文字字符,而不是正则表达式中的特殊字符。
  • \$(.*?)\$:这会撷取$符号之间的内容做为群组。.*?是一个非贪婪匹配,它捕获$符号之间的任何字符(换行符除外),但要尽可能少。

r'(\1)':这是匹配模式的替换模式。

  • (\1):它使用一个反向引用来引用模式中的第一个捕获组。在这种情况下,它是指在$个符号之间捕获的内容。通过用括号将\1括起来,我们指定替换的格式应为(...),从而捕获第一组的内容。

相关问题