不知何故,我对python中正则表达式的工作方式感到困惑,我希望替换字符串中所有以字母开头、后跟字母或空格的逗号。例如:
2015,1674,240/09,PEOPLE V. MICHAEL JORDAN,15,15
2015,2135,602832/09,DOYLE V ICON, LLC,15,15
第一行实际上有6列,而第二行有7列。因此,我尝试用空格(nl)替换第二行中(N,L)之间的逗号,如下所示:
^{pr2}$到目前为止,我一直在尝试,但是没有成功:
new_text = re.sub(r'([\w],[\s\w|\w])', "", text)
你知道我哪里错了吗?在
我们将非常感谢您的帮助!在
\w
匹配a-z
、A-Z
和{\1\2
。在Here is the DEMO.
您使用的模式
([\w],[\s\w|\w])
,是在,
之前使用一个单词字符(=字母数字或下划线,[\w]
),然后匹配逗号,然后匹配(再次消耗)1个字符-空白、单词字符或文本|
(就像character类中一样,管道字符被视为文字管道符号,而不是交替运算符)。在所以,主要问题是
\w
同时匹配字母和数字。在实际上,您可以利用环顾:
参见regex demo
(?<=[a-zA-Z])
是一个正的lookbehind,它要求字母位于,
之前,(?=[a-zA-Z\s])
是一个正的lookahead,它要求在逗号后面有一个字母或空白。在这是一个Python demo:
^{pr2}$如果仍要使用
\w
,可以使用反字符类内的相反类\W
从中排除数字和下划线:见another regex demo
相关问题 更多 >
编程相关推荐