0

フォーマットなどの入力文字列がありますabc;def;ghi;jkl;........。許可される最小の入力文字列は ですがabc、トークンの最大数に制限はありません。また、各トークンの長さは 3 に固定されていません。任意の文字数にすることができます。

たとえば、america;russia;uaeも受け入れられる入力です

最初の 3 つのトークンを取り出して、それらから個別のプロパティを作成したいと考えています。3 つ未満の場合、それぞれのトークンは になりますNULL

これまで、私は多くの正規表現を試してきました (これには慣れていません)。

${testprop}入力文字列が含まれます。

私は次のコマンドを使用しています

propertyregex property="testprop1" input="${testprop}" regexp="(.*)(\;.*)*/" select="\1"

しかし、それは機能していません。より良い正規表現の提案!!

4

2 に答える 2

0

みんな、ありがとう。私はついに答えを導き出しました。

次の正規表現を使用すると、
([^;]+)([;]?[^;]*)([;]?)([;]?[^;]*)([;]?)

1groupsと2でそれぞれ最初の 3 つの文字列トークンを取得できます4。ただし、 groupには、 group を適用して抽出することでさらに削除できる2先行が付属しています。 ;\;(.*)1

property name="inputString" value="russia;uae;germany;africa;"

propertyregex property="string1" input="${inputString}" regexp="([^;]+)([;]?[^;]*)([;]?)([;]?[^;]*)([;]?)" select="\1"

propertyregex property="string2" input="${inputString}" regexp="([^;]+)([;]?[^;]*)([;]?)([;]?[^;]*)([;]?)" select="\2"

propertyregex property="string3" input="${string2}" regexp="\;(.*)" select="\1"

propertyregex property="string4" input="${inputString}" regexp="([^;]+)([;]?[^;]*)([;]?)([;]?[^;]*)([;]?)" select="\4"

これにより、string1、string3、および string4 に必要な最初の 3 つのトークンが得られます。

string1 = russia

string3 = uae

string4 = germany

于 2012-12-31T04:28:22.037 に答える
0

この正規表現を使用して、最初の 3 文字が存在する場合はそれらを取得します。

/(?i)\b([\w]{3}(?=[\w]*;))/

ここで確認

この正規表現を使用して、値が 3 文字未満の文字列を取得します。

/(?i)\b([\w]{1,2}(?=;))/

ここで確認

于 2012-12-28T06:51:26.233 に答える