Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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中,如何在带有右括号字符的字符串之后插入字符串?_Python_Regex - Fatal编程技术网

在使用正则表达式的python中,如何在带有右括号字符的字符串之后插入字符串?

在使用正则表达式的python中,如何在带有右括号字符的字符串之后插入字符串?,python,regex,Python,Regex,我有这样的数据行: (ABCD:0.00825830327156463345,(LKSDJF:0.00000254996576400768,SDFADS:0.00917039554517301569):0.16367666117488463562,OIUO:0.00401845774067355072):0.0; ((OIUO:0.00298782818816040099,SDFADS:0.00148583412998809050):0.27857371651571366522,ABCD:0.0

我有这样的数据行:

(ABCD:0.00825830327156463345,(LKSDJF:0.00000254996576400768,SDFADS:0.00917039554517301569):0.16367666117488463562,OIUO:0.00401845774067355072):0.0;
((OIUO:0.00298782818816040099,SDFADS:0.00148583412998809050):0.27857371651571366522,ABCD:0.00188545323182991121,LKSDJF:0.00799482946501124843):0.0;
我尝试使用正则表达式在每个“:randomfloatingpoint\u number”后面插入一个字符串。有时数字后面跟逗号,有时跟分号

这是我写的代码:

        line = re.sub(r"):[0-9\.])",r"\1 " + string, line)
但我收到一条错误消息,括号不平衡:

Traceback (most recent call last):
File "AssignFGbranches.py", line 31, in <module>
line = re.sub(r"):[0-9\.])",r"\1 " + string, line)
File "/usr/lib/python2.7/re.py", line 151, in sub
return _compile(pattern, flags).sub(repl, string, count)
File "/usr/lib/python2.7/re.py", line 242, in _compile
raise error, v # invalid expression
sre_constants.error: unbalanced parenthesis
回溯(最近一次呼叫最后一次):
文件“assignfgfbranchs.py”,第31行,在
line=re.sub(r“:[0-9\.])”,r“\1”+字符串,行)
文件“/usr/lib/python2.7/re.py”,第151行,子文件
return\u compile(模式、标志).sub(repl、字符串、计数)
文件“/usr/lib/python2.7/re.py”,第242行,在编译中
raise错误,v#表达式无效
sre_constants.error:不平衡括号
我做错了什么


谢谢

您需要避开括号。此外,没有紧跟右大括号的数字。您可能需要以下内容:

(\):[0-9.]+[;,])
这将符合以下条件:


554517301569
):0.1636766117488463562,
OIUO

有两个问题。一是需要转义字面上的close paren。另一个原因是缺少该组的开放参数:

re.sub(r"(\):[0-9\.]+)",r"\1 " + string, line1)

我想你只需要像这样逃离帕伦人。/)你也不需要在角色类中逃离
。@matt,我从来都不知道:)@JasonSperske关于regex你真正需要知道的一切:@MattBall谢谢你的链接——我会查出来的!regex让我很困惑。谢谢,这个很好用。。。我仍然很难理解正则表达式。希望Matt在我的问题评论中的链接能有所帮助。再次感谢。