我使用SpreadsheetApp.newFilterCriteria().whenFormulaSatisfied()
来过滤工作表,但没有正确设置regexmatch((函数。我需要根据两个标准过滤列A:
- 必须包含"ak1"或"ak2">
- 并且,必须包含
myVar
,这是一个将传递给脚本的变量
我知道如何编写regexmatch
语句来获得标准1(regexmatch(A:A, "(?i)ak1|ak2")
(,但我一直在纠结如何将其与标准2相结合。
我迄今为止最好的尝试:
var regex = new RegExp( myVar, 'g' );
var crit = '=regexmatch(A:A, "^(?=.*ak1|ak2|)(?=.*myVar)")'
编辑以添加示例:
如果列A包含
Chr_rq_ak1
Chr_rq_ak2
Chr_rq_ak6
Chr_gv_ak1
我希望以下内容可见,其余内容隐藏:
Chr_rq_ak1
Chr_rq_ak2
您将使用AND
:
=AND(REGEXMATCH(A2,"(?i)ak(?:1|2)"),REGEXMATCH(A2,"myVar"))
如果要使用交替,必须将它们分组为(?=.*(?:k1|ak2))
,并在末尾省略|
。
如果后面只有一个字符,也可以使用字符类。
^(?=.*ak[12])(?=.*myVar)
Regex演示