替代非固定宽度的正则表达式看后面;蟒

时间:2017-03-24 14:49:22

标签: python regex

我已经查看了此问题的许多变体,但我仍然需要帮助整理解决方案。我感谢任何帮助。

替代非固定宽度正则表达式后面看起来似乎是创建一个捕获组。 有人可以帮助解决以下问题的语法吗?

假设有不同的句子,其中包含" account"," credit"和"借记"在他们中。我希望与那些谈论帐户被扣款的人进行匹配。 所以我想要消除匹配一个字符串,说明它被记入。 如何匹配" account"什么时候没有"信用"但是后面跟着/#34; debit"?

这是我尝试排除字符串" credit"匹配"帐户"。

(?<!(\bcredit))(.account)

&#34;记入您的帐户&#34; - 未能消除&#34;信用&#34;

&#34;考虑及时记入您的帐户&#34; - 未能消除&#34;信用&#34;

&#34;信用帐户&#34; - 消除&#34;信用&#34;但只能感谢&#34; &#34;在正则表达式。

我想将设置为。{0,20} ,但如果按预期行事则无法做到。

感谢任何帮助或反馈

1 个答案:

答案 0 :(得分:0)

您可以通过选择与单词组合匹配的字符串和简单的正则表达式来工作:

import re

s1 = "credit your account"
s2 = "considering crediting your account promptly"
s3 = "credit account"
s4 = "we are debiting your account"

pattern = '.*(credit.*account|account.*credit).*'

print(re.match(pattern, s1))
print(re.match(pattern, s2))
print(re.match(pattern, s3))
print(re.match(pattern, s4))

输出结果为:

<_sre.SRE_Match object; span=(0, 19), match='credit your account'>
<_sre.SRE_Match object; span=(0, 43), match='considering crediting your account promptly'>
<_sre.SRE_Match object; span=(0, 14), match='credit account'>
None

如果您使用re.search(),则只能使用正则表达式的括号部分。

在您感兴趣之后(不匹配的那些),您可以应用另一个正则表达式从中检索部分。