E. *_*aep 9 c# regex coldfusion
我正在为ColdFusion代码编写解析器.我正在使用正则表达式(在c#中)来提取cfquery标记的名称datasource属性.
目前,正则表达式如下
<cfquery\s.*datasource\s*=\s*(?:'|")(.*)(?:'|")
它适用于像<cfquery datasource="myDS"
或的
字符串
<cfquery datasource='myDS'
但解析字符串时会发疯
<cfquery datasource="#GetSourceName('myDS')#"
显然,正则表达式的一部分(?:'|')是原因.当第一个匹配是单引号时,有没有办法只匹配单引号?当第一个匹配是双引号时,只匹配双引号?
提前致谢!
编辑:我认为这应该在C#中工作,你只需要做一个后面的参考:
datasource\s*=\s*('|")(.*)(?:\1)
Run Code Online (Sandbox Code Playgroud)
也许
datasource\s*=\s*('|")(.*)(?:$1)
Run Code Online (Sandbox Code Playgroud)
匹配datasource="#GetSourceName('myDS')#"
与第一场比赛的后面引用\1
.
当然,你不能忽略第一个捕获组,?:
并且仍然有这项工作.此外,您可能要设置的lazy
标志,以免匹配额外"
的