1

二重引用符で囲まれた部分文字列 " 文字を含む文字列があります。二重引用符の間には、必要なデータがあります。

これから「必要な最初のデータ」と「必要な2番目のデータ」を抽出する正規表現を作成するにはどうすればよいですか:

'「最初に必要なデータ」と「2 番目に必要なデータ」を含む文字列'

次のコードを試しました。

<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" />

残念ながら、これには Match の二重引用符も含まれます。ColdFusion の正規表現エンジンはかなり古く粗雑なので、先読み/後読みはサポートされていません。

二重引用符は簡単に置き換えることができますが、本当に先読みと後読みを使用したい場合は、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 に答える