Python 重新细分除$和百分比以外的所有数字
我正试图用Python构建一个正则表达式,以将不是美元值或带有x的百分比的子数字。下面是一个例句:Python 重新细分除$和百分比以外的所有数字,python,regex,Python,Regex,我正试图用Python构建一个正则表达式,以将不是美元值或带有x的百分比的子数字。下面是一个例句: s = "Hi there my name is Jon Doe, I haven't been here for 4 years, my birthday is 1/23/92, I received 10% off of my $20.50 purchase." re.sub(<pattern>, 'x', s) 谢谢 正如@abarnert所说,至少这可能是一次讨论的尝试 r
s = "Hi there my name is Jon Doe, I haven't been here for 4 years, my birthday is 1/23/92, I received 10% off of my $20.50 purchase."
re.sub(<pattern>, 'x', s)
谢谢 正如@abarnert所说,至少这可能是一次讨论的尝试
re.sub('(?<![$.0-9])\d*[.]*\d+(?![%.0-9])', 'x', s)
在你想清楚如何将
20.50
视为一个单独的数字来定义“数字”之前,使用这一点会很复杂(因此你跳过了所有$20.50
,而不仅仅是$20
部分)。首先,为“number”写一个正则表达式。那么负的向后看和向前看仍然是一个问题,因为您希望确保,例如,10%
中的%
意味着您跳过整个10
,而不仅仅是贪婪地匹配1
,然后跳过0%
。这是一个很难解决的问题,所以你可能会被困在某个地方,但是一旦你被困了,就去问,而不是问一个你可能听不懂的正则表达式。对不起,我应该把我的尝试贴出来。
re.sub('(?<![$.0-9])\d*[.]*\d+(?![%.0-9])', 'x', s)
"Hi there my name is Jon Doe, I haven't been here for x years, my birthday is x/x/x, I received 10% off of my $20.50 purchase."