我已经获得了大约1500行的列表。我试图写一个正则表达式来找到那些不包含8个字符串的正则表达式?d。现在的问题是,在中间可能还有其他角色。我并不关心那里的其他角色,但我确实需要8个(全部)的角色。
例如,这一行是可以的:?d?u?d?u?d?d?d?d?d?d(8?d)
这一行不是:?d?d?d?d?u?d?d?d?d?u?d(9?d)
这一行不是:?d?l?u?d?d?d?d?d?d?d?(9?d)
问题是其他字符(它们是?u和?l)可能出现在该行的任何位置。是否有正则表达式或一系列正则表达式可以做到这一点?我正在使用Notepad ++正则表达式。
不必一次性完成所有操作。例如,我已经对[\?d] {9,11}进行了正则表达式搜索,这有帮助,但只消除了27条坏线。
答案 0 :(得分:3)
这可以满足您的需求:
^(?=(?:\?d.*?){8})(?!(?:\?d.*?){9}).+$
从头开始,确保该行包含8个?d
组,但如果它包含9个(或更多),则拒绝它。完整的解释:
^
字符串的开头(?=(?:\?d.*?){8})
积极前瞻:必须遵循此模式:(?:\?d.*?){8}
\?d.*?
匹配文字字符串?d
,后跟零个或多个字符,根据需要匹配{8}
在前一个模式的行中出现8次(?!(?:\?d.*?){9})
否定前瞻:不得跟随此模式:(?:\?d.*?){9}
\?d.*?
匹配文字字符串?d
,后跟零个或多个字符,根据需要匹配{9}
前一个模式的一行中出现了9次.+
匹配任何字符$
字符串结尾答案 1 :(得分:0)
答案 2 :(得分:0)