入力 -
String ipXmlString = "<root>"
+ "<accntNoGrp><accntNo>1234567</accntNo></accntNoGrp>"
+ "<accntNoGrp><accntNo>6663823</accntNo></accntNoGrp>"
+ "</root>";
using 内の値をマスクするために、次のことを試しました
String op = ipXmlString .replaceAll("<accntNo>(.+?)</accntNo>", "######");
ただし、上記のコードはすべての値をマスクします
<root><accntNoGrp>######</accntNoGrp><accntNoGrp>######</accntNoGrp></root>
期待される出力:
<root><accntNoGrp><accntNo>#####67</accntNo></accntNoGrp><accntNoGrp><accntNo>#####23</accntNo></accntNoGrp></root>
java regex を使用してこれを達成する方法は?
交換品が間違っています<accntNo>
。実際の交換品にタグを含める必要があります。また、口座番号の下2桁/数字を表示したいようです。この場合、試合中にこの情報を取得し、交換に使用できます。
コード:
String op = ipXmlString.replaceAll("<accntNo>(?:.+?)(.{2})</accntNo>", "<accntNo>######$1</accntNo>");
説明:
<accntNo> match an opening tag
(?:.+?) match, but do not capture, anything up until the first
(.{2}) two characters before closing tag (and capture this)
</accntNo> match a closing tag
ここ?:
で、パターンの括弧内で使用することにより、正規表現エンジンにそれをキャプチャしないように指示していることに注意してください。口座番号の最後の 2 文字の前に何かをキャプチャしても意味がありません。
$1
交換の数量は、最初のキャプチャ グループを参照します。この場合、それは口座番号の最後の 2 文字です。したがって、この方法で必要な置換文字列を作成します。
ここでのデモ:
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加