Python 正则表达式:仅在大括号内的单词周围添加引号
我试图在单词周围加上双引号,只在大括号内 输入:Python 正则表达式:仅在大括号内的单词周围添加引号,python,regex,replace,Python,Regex,Replace,我试图在单词周围加上双引号,只在大括号内 输入: {Cat} {Cow Pig} {Cat,Dog} cat dog fish 预期产出: {"Cat"} {"Cow Pig"} {"Cat","Dog"} cat dog fish 只有大括号内的单词才受影响,单词可以有空格,只能用逗号分隔 这就是我尝试过的方法,它几乎可以工作,但不能单独捕获第2组(单词) ({)([a-zA-z|\s|,]+?)(}) Replace with : {"\2"} 演示: 谢谢 您可以使用{([\w\s
{Cat}
{Cow Pig}
{Cat,Dog}
cat dog fish
预期产出:
{"Cat"}
{"Cow Pig"}
{"Cat","Dog"}
cat dog fish
只有大括号内的单词才受影响,单词可以有空格,只能用逗号分隔
这就是我尝试过的方法,它几乎可以工作,但不能单独捕获第2组(单词)
({)([a-zA-z|\s|,]+?)(})
Replace with :
{"\2"}
演示:
谢谢 您可以使用
{([\w\s,]+)}
regex匹配要用双引号括起单词的所有字符串,然后用单独的re.sub
括起单词:
import re
r = r'{([\w\s,]+)}'
s = "{Cat}\n{Cow Pig}\n{Cat,Dog}\ncat dog fish"
print( re.sub(r, lambda x: "{{{}}}".format(re.sub(r'\w+', r'"\g<0>"', x.group(1))), s) )
主要的提取正则表达式是{([\w\s,]+)}
(),但您可以将其精确为{\s*(\w+(?:\s*(?:,\s*)?\w+)\s*}
(请参阅)
详细信息
-a{
字符{
-第1组:一个或多个单词、空格或([\w\s,]+)
字符,
-a}
字符}
-{\s*
和0+空格{
-第1组:(\w+(?:\s*(?:,\s*)?\w+*)
-1个或多个单词字符\w+
-0次或多次重复(?:\s*(?:,\s*)?\w+*
-0+空格\s*
-可选的(?:,\s*)?
和0+空格序列、
-1+字字符\w+
-0+空格和\s*}
}
{"Cat"}
{"Cow" "Pig"}
{"Cat","Dog"}
cat dog fish