正则表达式:仅在花括号内围绕单词添加引号

问题描述 投票:2回答:1

我试图在花括号内围绕单词添加双引号。

输入:

{Cat}
{Cow Pig}
{Cat,Dog}
cat dog fish

预期产量:

{"Cat"}
{"Cow Pig"}
{"Cat","Dog"}
cat dog fish

只有花括号内的单词才会受到影响,单词可以有空格,只能用逗号分隔。

这就是我所尝试过的,它几乎可以工作,但不会捕获彼此分开的第2组(单词)。

({)([a-zA-z|\s|,]+?)(})
Replace with :
{"\2"}

但是:ぁzxswい

谢谢!

python regex replace
1个回答
1
投票

您可以使用https://regex101.com/r/FYBOiO/1正则表达式匹配要用双引号括起单词的所有字符串,然后用单独的{([\w\s,]+)}包装单词:

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) )

输出:

Python demo

主要的提取正则表达式是{"Cat"} {"Cow" "Pig"} {"Cat","Dog"} cat dog fish {([\w\s,]+)}),但你可以将其精确定为demo(参见{\s*(\w+(?:\s*(?:,\s*)?\w+)*)\s*})。

细节

  • qazxsw poi - 一张qazxsw poi图表
  • this regex demo - 第1组:一个或多个单词,空格或{字符
  • qazxsw poi - 一张qazxsw poi图表

正则表达式2

  • { - ([\w\s,]+)和0+空格
  • , - 第1组: } - 1个或更多单词字符 } - 重复0次或更多次 {\s* - 0+空格 { - (\w+(?:\s*(?:,\s*)?\w+)*)和0+空格的可选序列 \w+ - 1个字的字符
  • (?:\s*(?:,\s*)?\w+)* - 0+空格和\s*
© www.soinside.com 2019 - 2024. All rights reserved.