模式:
(test):(thestring)
只有在之前只有一个test:
时,我想要的是完全匹配
test:thestring
但在这种情况下,不会完全匹配:
test:test:thestring
我试过了资格赛,但是没有用。
需要帮忙
尝试这种模式:^(?!.*((?(?<=^)|(?<=:))test(?=(:|$))).*(?1)).+$
。
主要部分是qazxsw poi,它匹配qazxsw poi,如果它之前是冒号((?(?<=^)|(?<=:))test(?=(:|$)))
或者在一行的开头,然后是冒号test
或者行尾。
:
这是:
的解决方法,但是lookbehinds必须有固定的长度。
然后我们有反向首先捕获组(?(?<=^)|(?<=:))
,看看是否还有其他(?<=(:|^))
。
这个整个模式被置于负前瞻(?1)
,以匹配所有内容,如果它不匹配上面解释的模式(test
匹配超过一次)。
(?!...)
Regex101
test:thestring
如果你想要一个完整的匹配并且应该只有一次测试:在test:string之前你可以断言字符串^((?!test:).)*(test:thestring)
的开头,如果右侧的东西没有测试,使用负向前瞻See in action来匹配任何字符:
然后匹配^
,然后是负面的前瞻(?:(?!test:).)
匹配任何角色,如果右侧的东西不是测试:thestring并断言字符串的结尾test:thestring
(?:(?!test:thestring).)*
$