我想在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)
这是一个工作样本:
如果有人可以解释它为什么有效以及是否有更好的解决方案,那就表示赞赏吗?
编辑: 这是一个简化的regx。由于复杂性,最后一个在某些情况下崩溃了:
Find: (?:(^|[\s;(])(?!xfa\.resolveNode\(\".+\"\))((?:[a-zA-Z0-9_\.\[\]]*))(\.(?:rawValue|access|fillColor)))
Replace: \1xfa.resolveNode\("\2"\)\3
检查here。
塔雷克