0

メールアドレスのユーザー ID セクションから作成された plif ファイルに ID フィールドを追加する必要があります。私たちの電子メール ユーザー ID は可変長ですが、ID として出力する場合、出力は正確に 48 文字の長さでなければなりません。
電子メール ユーザー ID を検索する正規表現

 A(02||20)(N.* )([^ ]*)(\@[a-zA_Z.]*newpaltz.edu)

これまでの電子メール ユーザー ID の出力 \3 = 電子メール ユーザー ID & ZZZ は単なるプレース ホルダーだったので、出力を簡単に見つけることができました。

 A02\3 ZZZ A\1\2\3\4


問題は、出力を正確に 48 文字の長さにフォーマットできないことです。
取得する可能性のある 3 つのメール ユーザー ID を次に示します。

toleveg
some.otheruser
n03468654


次のようにフォーマットして出力する必要があります。

A02toleveg             +                   00ACN
A02some.otheruser      +                   00ACN
A02n03468654           +                   00ACN

私はnotepad++を使用していますが、PHPに切り替えることができると思います。VBscript または Jscript は、直接的な正規表現ソリューションがない場合に対処できる他の言語です。

4

2 に答える 2

0

どうしても VBScript を使用する場合は、正規表現の Replace メソッドでコールバック関数を使用できます。

Set re = new RegExp
re.global = true
re.pattern = "A(02||20)(N.* )([^ ]*)(\@[a-zA_Z\.]*newpaltz.edu)"
myString = "A02Ntoleveg anyOtherText toleveg@bla.newpaltz.edu"
msgbox re.Replace(myString, getRef("replaceHelper"))

public function replaceHelper(match, fixed20or02, Nanything, emailLeft, emailRight, position, fullstring)
    Set sb = CreateObject("System.Text.StringBuilder")
    sb.Append_3 "A"
    sb.Append_3 fixed20or02
    sb.Append_3 left(emailLeft & string(48, " "), 48)
    sb.Append_3 "00ACN"

    replaceHelper = sb.ToString()
end function

' outputs: "A02toleveg                                         00ACN"

注: 必要な正確な出力ではないと思いますが、アイデアは得られます。希望に簡単に適応できます。
注 2: Learns と Funs には stringbuilder を使用しましたがs = s & "text to append"、もちろん引き続き使用できます。
注 3:\.正規表現の最後のグループで a を使用します。.すべてに一致します。
注 4: 電子メールの検証は困難です。Wikipediaを参照してください。すべてのアドレスが一致していることを確認してください。(あなたはで私に連絡することができますmy*account{"@possible spam"!}@[IPv6:2001:db8:1ff::a0b:dbd0]

于 2013-11-06T08:11:35.663 に答える