【发布时间】:2020-12-31 19:38:36
【问题描述】:
这是我的正则表达式:
(?<!PAYROLL)(FIDELITY(?!.*TITLE)(?!.*NATION)|INVEST)(?!.*PAYROLL)
这是我的文字
INCOMING WIRE TRUST GS INVESTMENT
VANGUARD PAYROLL
PAYROLL FIDELITY
ACH CREDIT FIDELITY INVESTM-FIDELITY
ACH CREDIT FIDELITY INVESTM-FIDELITY
ACH DEBIT FIDELITY
ACH DEBIT FIDELITY
ACH CREDIT FIDELITY INVESTM-FIDELITY
在http://regexr.com 上运行此程序时(使用 PCRE RegEx 引擎),它在"PAYROLL FIDELITY" 上匹配,但我指定了一个否定的后视而不这样做(?<!PAYROLL)。
任何帮助表示赞赏。
【问题讨论】:
-
但是有空格,试试
(?<!PAYROLL\s),见regex101.com/r/MclkGz/1 -
改用regex101 - 正则表达式似乎在那里工作
-
那行得通,@WiktorStribiżew,为什么我不能使用
.*而不是\s? -
不可能在 PCRE 正则表达式模式的后视中使用无限宽度模式。您可以使用
(*SKIP)(*F):\bPAYROLL.*?FIDELITY(*SKIP)(*F)|(FIDELITY(?!.*TITLE)(?!.*NATION)|INVEST)(?!.*PAYROLL)解决它。见regex101.com/r/MclkGz/2 -
ah
*后视内的量词使其宽度不固定,我看看能不能找到解决办法
标签: python regex regex-lookarounds regex-negation