繁体   English   中英

如何将负向后搜索与未知字符之间进行匹配?

[英]How to match negative lookbehind with unknown characters between?

我需要匹配所有.get('asfd') ,但是仅在事先不存在.wait(.*)的情况下。

.wait(500).get('asdf') // shouldn't match
.asdf('asdf').get('asdf') // should match

不幸的是,负向后看不支持量词,因此我不确定如何描述\\d* .wait().get('asdf')之间的空白。

匹配此不可量化区域的方法是什么?

我想我需要某种方式来描述在最后一组括号后面没有wait ,但是有一种简单的方法可以做到这一点吗?

谢谢

好的,花了很多时间进行实验,提出这个问题有助于弄清情况。

答案是要描述两者之间:与后向分离

(?<!wait)
(?:\([^)]*\))
(\.get\(.*\))

第二部分允许任何字符,直到有括号为止。 有时,第一个括号出现在引号内,应该忽略。 不考虑转义的引号,我的整个正则表达式变为:

((?<!wait)\(.*\)\s*)(\.get\((?:"[^"]*"|'[^']*')[^\)]*\))

我用它在匹配组1( $1 )和2( $2 )的.get() .wait()之前/之后插入.wait()

$1.wait(234)$2.wait(234)

在此处输入图片说明

在此处输入图片说明

我不是正则表达式专家,但是如何呢?

/^(?!\\.wait\\(\\d+\\)).*\\.get\\(.*\\)/g

说明:

(?! 负向超前。指定在主表达式后不能匹配的组(如果匹配,则结果将被丢弃)。

\\. 转义字符。 匹配“。” 字符(字符代码46)。

w 角色。 匹配“ w”字符(字符代码119)。 区分大小写。

a 角色。 匹配一个“ a”字符(字符代码97)。 区分大小写。

i 性格。 匹配“ i”字符(字符代码105)。 区分大小写。

t 字符。 匹配一个“ t”字符(字符代码116)。 区分大小写。

\\( 转义字符。匹配一个“(”字符(字符代码40)。

\\d 数字。 匹配任何数字字符(0-9)。

+ 量词。 匹配1个或多个前面的令牌。

\\) 转义字符。 匹配“)”字符(字符代码41)。

. 点。 匹配除换行符以外的任何字符。

* 量词。 匹配0个或多个前面的令牌。

\\. 转义字符。 匹配“。” 字符(字符代码46)。

g 字符。 匹配“ g”字符(字符代码103)。 区分大小写。

e 字符。 匹配“ e”字符(字符代码101)。 区分大小写。

t 字符。 匹配一个“ t”字符(字符代码116)。 区分大小写。

\\( 转义字符。匹配一个“(”字符(字符代码40)。

. 点。 匹配除换行符以外的任何字符。

* 量词。 匹配0个或多个前面的令牌。

\\) 转义字符。 匹配“)”字符(字符代码41)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM