Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python re regex子字母不包含在引号中,如果它们与特定单词(包括regex group/match)匹配,则不包含在引号中_Python_Regex_Re - Fatal编程技术网

Python re regex子字母不包含在引号中,如果它们与特定单词(包括regex group/match)匹配,则不包含在引号中

Python re regex子字母不包含在引号中,如果它们与特定单词(包括regex group/match)匹配,则不包含在引号中,python,regex,re,Python,Regex,Re,我需要将未用引号括起来的字母分为多个子字母,如果它们将单词与当前的匹配,则不需要将其分为一个特定字符串,其中一部分包含匹配组,例如 重新导入 导入字符串 s='AB+B+“你好”+TODAY()/C*100' x=re.sub(r'\“[^”]*\“|\b今天([A-Z]+)”,r'a2num(“\g”)”,s) 打印(x) 预期产出: 'a2num(“AB”)+a2num(“B”)+“HELLO”+TODAY()/a2num(“C”)*100' 实际产量: 'a2num(“AB”)+a2n

我需要将未用引号括起来的字母分为多个子字母,如果它们将单词
与当前的
匹配,则不需要将其分为一个特定字符串,其中一部分包含匹配组,例如

重新导入
导入字符串
s='AB+B+“你好”+TODAY()/C*100'
x=re.sub(r'\“[^”]*\“|\b今天([A-Z]+)”,r'a2num(“\g”)”,s)
打印(x)
预期产出:

'a2num(“AB”)+a2num(“B”)+“HELLO”+TODAY()/a2num(“C”)*100'
实际产量:

'a2num(“AB”)+a2num(“B”)+a2num(“你好”)+a2num(“今天”)/a2num(“C”)*100'

我几乎做到了,但它没有遵守引号规则或今天的
单词规则,我知道字符串没有任何意义,但它只是对正则表达式的一个严格测试您的正则表达式方法是正确的,但您需要在
re.sub

>>> s = 'AB+B+" HELLO"+TODAY()/C* 100'
>>> rs = re.sub(r'"[^"]*"|\bTODAY\b|\b([A-Z]+)\b',
...     lambda m: 'a2num("' + m.group(1) + '")' if m.group(1) else m.group(), s)
>>> print (rs)

a2num("AB")+a2num("B")+" HELLO"+TODAY()/a2num("C")* 100

您只需要匹配大写字母即可?@00是的,整个字符串将在手之前已大写