lam*_*pie 1 regex string coldfusion coldfusion-8
我有一个字符串,其中包含一些双引号子字符串,即"字符.双引号之间是我想要的数据.
我怎么能写一个正则表达式从中提取"我想要的第一个数据"和"我想要的第二个数据":
'带有"我想要的第一个数据"和"我想要的第二个数据"的字符串
我尝试了以下代码.
<cfset mydata = 'some string with "the first data i want" and "the second data i want"'/>
<cfset arrData = ListToArray(mydata ,'"') />
Run Code Online (Sandbox Code Playgroud)
大概你可以做一些像这样的小事:
<cfset matches = REMatch('"([^"]*)"', mydata) />
<cfdump var="#matches#" label="Example REMatch" />
Run Code Online (Sandbox Code Playgroud)
不幸的是,这也将包括Match中的双引号,而ColdFusion的正则表达式引擎相当陈旧和劣质,因此它不支持Lookaheads/Lookbehinds.
双引号可以很容易地替换,但如果你真的想使用前瞻和后视,你可以使用Java自己的模式库.
<cfset matches = [] />
<cfset pattern = CreateObject("java","java.util.regex.Pattern").Compile('(?<=")[^"]*(?=")') />
<cfset matcher = pattern.Matcher(mydata) />
<cfloop condition="matcher.Find()">
<cfset ArrayAppend(matches, matcher.Group()) />
</cfloop>
<cfdump var="#matches#" label="Example of Java Regex" />
Run Code Online (Sandbox Code Playgroud)