我需要匹配所有.get('asfd')
,但前提是.wait(.*)
事先不存在。
.wait(500).get('asdf') // shouldn't match
.asdf('asdf').get('asdf') // should match
不幸的是,负向后看不支持量词,因此我不确定如何描述.wait(
和).get('asdf')
和\d*
之间的空白
匹配此不可量化区域的方法是什么?
我认为我需要某种方式来描述最后一组括号后面没有wait
,但是有一种简单的方法可以做到这一点吗?
谢谢
答案 0 :(得分:2)
好吧,花了很多时间进行实验,问这个问题有助于弄清情况。
答案是描述两者之间的区别:与外观无关。
(?<!wait)
(?:\([^)]*\))
(\.get\(.*\))
第二部分允许带括号之前的任何字符。有时,第一个括号出现在引号内,应该忽略。不考虑转义的引号,我的整个正则表达式变为:
((?<!wait)\(.*\)\s*)(\.get\((?:"[^"]*"|'[^']*')[^\)]*\))
我用它在匹配组1(.wait()
和2(.get()
)的$1
之前/之后插入$2
$1.wait(234)$2.wait(234)
答案 1 :(得分:0)
我不是正则表达式专家,但是呢?
/^(?!\.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)。