我有一个字符串,其中包含一些双引号子字符串,即“字符。双引号之间是我想要的数据。
如何编写正则表达式以从中提取“我想要的第一个数据”和“我想要的第二个数据”:
'带有“我想要的第一个数据”的字符串和“我想要的第二个数据”'
我尝试了以下代码。
<cfset mydata = 'some string with "the first data i want" and "the second data i want"'/>
<cfset arrData = ListToArray(mydata ,'"') />
答案 0 :(得分:5)
据推测,你可以做一些微不足道的事情:
<cfset matches = REMatch('"([^"]*)"', mydata) />
<cfdump var="#matches#" label="Example REMatch" />
不幸的是,这也将包括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" />