第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

僅使用具有多個(gè) SSN 的文件中的部分掩碼來屏蔽所有 SSN

僅使用具有多個(gè) SSN 的文件中的部分掩碼來屏蔽所有 SSN

Helenr 2023-06-21 14:55:45
首先聲明我對正則表達(dá)式很糟糕。我想在字符串中查找社會(huì)保障號的每個(gè)實(shí)例,并屏蔽除破折號 (-) 和 SSN 的最后 4 個(gè)之外的所有實(shí)例。例子String someStrWithSSN = "This is an SSN,123-31-4321, and here is another 987-65-8765";Pattern formattedPattern = Pattern.compile("^\\d{9}|^\\d{3}-\\d{2}-\\d{4}$");Matcher formattedMatcher = formattedPattern.matcher(someStrWithSSN);while (formattedMatcher.find()) {    // Here is my first issue.  not finding the pattern}// my next issue is that I need to my String should look like this//     "This is an SSN,XXX-XX-4321, and here is another XXX-XX-8765"預(yù)期結(jié)果是找到每個(gè) SSN 并替換。上面的代碼應(yīng)生成字符串“這是一個(gè) SSN,XXX-XX-4321,這里是另一個(gè) XXX-XX-8765”
查看完整描述

1 回答

?
慕仙森

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超8個(gè)贊

您可以通過執(zhí)行以下操作來簡化此操作:


String initial = "This is an SSN,123-31-4321, and here is another 987-65-8765";

String processed = initial.replaceAll("\\d{3}\\-\\d{2}(?=\\-\\d{4})","XXX-XX");

System.out.println(initial);

System.out.println(processed);

輸出:


這是一個(gè) SSN,123-31-4321,這里是另一個(gè) 987-65-8765

這是一個(gè) SSN,XXX-XX-4321,這里是另一個(gè) XXX-XX-8765


正則表達(dá)式\d{3}\-\d{2}(?=\-\d{4})捕獲三個(gè)數(shù)字后跟兩個(gè)數(shù)字,用破折號分隔(然后是破折號和 4 位數(shù)字,非捕獲)。與此正則表達(dá)式一起使用replaceAll將創(chuàng)建所需的掩蔽效果。


編輯:


如果您還希望此替換針對 9 個(gè)連續(xù)數(shù)字,您可以執(zhí)行以下操作:


String initial = "This is an SSN,123-31-4321, and here is another 987658765";

String processed = initial.replaceAll("\\d{3}\\-\\d{2}(?=\\-\\d{4})","XXX-XX")

                       .replaceAll("\\d{5}(?=\\d{4})","XXXXX");

System.out.println(initial);

System.out.println(processed);

輸出:


這是一個(gè) SSN,123-31-4321,這里是另一個(gè) 987658765

這是一個(gè) SSN,XXX-XX-4321,這里是另一個(gè) XXXXX8765


正則表達(dá)式\d{5}(?=\d{4})捕獲 5 位數(shù)字(后跟 4 位數(shù)字,非捕獲)。使用第二次調(diào)用replaceAll將使用適當(dāng)?shù)奶鎿Q來定位這些序列。


編輯: 這是以前的正則表達(dá)式的更強(qiáng)大的版本,以及新正則表達(dá)式如何工作的更長演示:


String initial = "123-45-6789 is a SSN that starts at the beginning of the string,

    and still matches. This is an SSN, 123-31-4321, and here is another 987658765. These

    have 10+ digits, so they don't match: 123-31-43214, and 98765876545.

    This (123-31-4321-blah) has 9 digits, but is followed by a dash, so it doesn't match.

    -123-31-4321 is preceded by a dash, so it doesn't match as well. :123-31-4321 is 

    preceded by a non-colon/digit, so it does match. Here's a 4-2-4 non-SSN that would've

    tricked the initial regex: 1234-56-7890. Here's two SSNs in parentheses: (777777777) 

    (777-77-7777), and here's four invalid SSNs in parentheses: (7777777778) (777-77-77778)

    (777-778-7777) (7778-77-7777). At the end of the string is a matching SSN:

    998-76-4321";

String processed = initial.replaceAll("(?<=^|[^-\\d])\\d{3}\\-\\d{2}(?=\\-\\d{4}([^-\\d]|$))","XXX-XX")

                       .replaceAll("(?<=^|[^-\\d])\\d{5}(?=\\d{4}($|\\D))","XXXXX");

System.out.println(initial);

System.out.println(processed);

輸出:

123-45-6789 是從字符串開頭開始的 SSN,并且仍然匹配。這是一個(gè) SSN,123-31-4321,這是另一個(gè) 987658765。這些有 10 多個(gè)數(shù)字,因此它們不匹配:123-31-43214 和 98765876545。這個(gè)(123-31-4321-blah)有9 位數(shù)字,但后面有破折號,因此不匹配。-123-31-4321 前面有破折號,因此也不匹配。:123-31-4321 前面有一個(gè)非冒號/數(shù)字,因此它確實(shí)匹配。這是一個(gè) 4-2-4 非 SSN,它會(huì)欺騙初始正則表達(dá)式:1234-56-7890。括號中有兩個(gè) SSN:(777777777) (777-77-7777),括號中有四個(gè)無效 SSN:(7777777778)(777-77-77778) (777-778-7777) (7778-77-7777)。字符串末尾是匹配的 SSN:998-76-4321

XXX-XX-6789 是從字符串開頭開始的 SSN,并且仍然匹配。這是 SSN,XXX-XX-4321,這是另一個(gè) XXXXX8765。它們有 10 個(gè)以上的數(shù)字,所以它們不匹配:123-31-43214 和 98765876545。這個(gè) (123-31-4321-blah) 有 9 個(gè)數(shù)字,但后面跟著一個(gè)破折號,所以它不匹配。-123-31-4321 前面有一個(gè)破折號,所以它也不匹配。:XXX-XX-4321 前面有一個(gè)非冒號/數(shù)字,所以它匹配。這是一個(gè) 4-2-4 非 SSN,它會(huì)欺騙初始正則表達(dá)式:1234-56-7890。括號中有兩個(gè) SSN:(XXXXX7777) (XXX-XX-7777),括號中有四個(gè)無效 SSN:(7777777778)(777-77-77778) (777-778-7777) (7778-77-7777)。字符串末尾是匹配的 SSN:XXX-XX-4321


查看完整回答
反對 回復(fù) 2023-06-21
  • 1 回答
  • 0 關(guān)注
  • 185 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號