1

我有一个字符串,其中包含一些双引号子字符串,即 " 字符。双引号之间是我想要的数据。

我如何编写一个正则表达式来从中提取“我想要的第一个数据”和“我想要的第二个数据”:

'一些带有“我想要的第一个数据”和“我想要的第二个数据”的字符串'

我尝试了以下代码。

<cfset mydata = 'some string with "the first data i want" and "the second data i want"'/>

<cfset arrData = ListToArray(mydata ,'"') />
4

1 回答 1

5

大概你可以做一些像这样微不足道的事情:

<cfset matches = REMatch('"([^"]*)"', mydata) />
<cfdump var="#matches#" label="Example REMatch" />

不幸的是,这也将包括匹配中的双引号,并且 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" />
于 2012-10-18T05:08:37.007 回答