0

このパターンで & タグの間にある文字を見つけたいと思います。タグ間の桁数は可変です (5 の場合もあれば、5 ~ 4 の場合もあれば、9 の場合もあります)。基本的に、タグ間の数字は常に必要です。タグの間に文字やスペースが入ったテキスト ファイルが表示されることがあります。

スクリプトに実行させたいのは、タグ間に文字 [a-zA-Z) が見つかった回数をカウントすることです。0 が見つかった場合は、0 を報告します。

私の現在のテスト テキスト ファイルには 2 つの zipcode タグがあります...どちらもタグ間に数字しかありません (これは良いことです)。以下のスクリプトまたはパターンは 0 を表示する必要があります (文字がないため)。後ろ向きです。タグの 1 つに文字を入れた場合、以下のこのパターンは 1 を報告します。パターンが逆になっているようです。[^0-9]* に変更すると、文字、数字、またはその両方があっても何も見つかりません。

Set rgxp3 = New Regexp
rgxp3.Pattern = "<ZipCode>([^a-zA-Z]*)</ZipCode>"
rgxp3.IgnoreCase = False
rgxp3.Global = True
Set matches3 = rgxp3.Execute( contents )
4

2 に答える 2

0

通常、正規表現のグループ化は、ステートメント内の部分を抽出するために使用されます ([uses the brackets()].

したがって、これを解決するには、次のような正規表現文字列を記述します。

<zipcode>([\da-zA-Z]{5}-[\da-zA-Z]{4})</zipcode>

(この正規表現文字列は、5 つの英数字の後にハイフン (-) が続き、その後に 4 つの英数字が続くものを探します。その部分については、グーグルで検索してください)。

私たちの式から、括弧内の部分はグループとして抽出できます。

[\da-zA-Z]{5}-[\da-zA-Z]{4}

グループ化は 1 つしかないため、これは通常グループ 0 と呼ばれます。

したがって、サンプルで最初の式を使用します。

<zipcode>12345-1234</zipcode>

グループ0を返すと、次のようになります。

12345-1234

I'm not familiar with vbscript, so I can't answer it myself, but this answer appears to explain how to extract sub matches in vbscript; Regular Expression - How to find a match within a match?

If you want to test your regexes, you should use a testing tool such as RegexPal, it highlights what is being matched in realtime so you can test parts of your expression to see whats not working. http://regexpal.com/ Another good source of information is regex reference, this page holds alot of reference information for the basic regex functions. enter link description here

于 2013-07-26T14:18:03.680 に答える