使用正则表达式查找符合特定条件的变量

时间:2016-03-21 21:49:28

标签: javascript regex expression adobe livecycle

我想在Notepad ++中使用正则表达式来查找表达式,如下所示:

form1.subform [0] .linestatus 1。rawValue

form1.subform.linestatus 1。rawValue

或者,一般模式如下(Adobe LiveCycle FormCalc表达式):

element1.element2 [index1之间] .element3 [索引2] .element4.element_n.propName

其中[index1]和[index2]是可选的。

此外,匹配应排除以下内容(Adobe LiveCycle JavaScript表达式):

xfa.resolveNode( “form1.subform.linestatus 1”)。rawValue xfa.resolveNode( “form1.subform [0] .linestatus 1”)。rawValue

或者一般模式是(必须与以下内容不匹配):   xfa.resolveNode( “element1.element2 [index1之间] .element3 [索引2] .element4”)。PROPNAME

其中propName可以是以下任何固定名称: - rawValue - 访问 - formattedValue ...等

目标最终是能够使用find / replace将第一个语法(FormCalc)转换为第二个语法(JavaScript)。

感谢您的帮助。

注意:到目前为止,我能够使用这个表达式,但还不够:

\b(?!xfa\.resolveNode\(\")([a-zA-Z_][a-zA-Z0-9_]*(\[([0-9]+)\])?\.)*rawValue

编辑: 我想我找到了解决方案,但我不确定它为什么会起作用。检查一下:

(^|[\s(])(?!xfa\.resolveNode\(")(([a-zA-Z][a-zA-Z0-9]*(\[[0-9]+\])?\.?)*)(\.rawValue)

这是一个工作样本:

  

https://regex101.com/r/nY9vT1/9

如果有人可以解释它为什么有效以及是否有更好的解决方案,那就表示赞赏吗?

编辑: 这是一个简化的regx。由于复杂性,最后一个在某些情况下崩溃了:

Find:   (?:(^|[\s;(])(?!xfa\.resolveNode\(\".+\"\))((?:[a-zA-Z0-9_\.\[\]]*))(\.(?:rawValue|access|fillColor)))
Replace:    \1xfa.resolveNode\("\2"\)\3

检查here

塔雷克

0 个答案:

没有答案