正则表达式 停止捕获 重复的标签

huangapple go评论62阅读模式
英文:

Regex Stop capture repeated Tags

问题

我在根据标签(多个单词)在之前和之后的读数中捕获 SSN(社会安全号码)方面遇到问题。该字段是自由文本,用户可以以任何格式输入 SSN。在下面的输入中,我有两种不同的格式 XXX-XXX-XXX 和 XX-XXXXXXX。

输入字符串:

    嗨,我是约翰,我的 SSN 是 111-111-111,然后我妻子的是 222-222-222,可能是 SocialNumber,我女儿的 SSN 是 :: 12.3456789,儿子的 SSN 是 33-4444444。

标签:SSN,SocialNumber

正则表达式:

    String pattern = "(SSN|SocialNumber)([^\\d]*)(\\d{3}[.-]\\d{3}[.-]\\d{3})|"
                    + "(\\d{3}[.-]\\d{3}[.-]\\d{3})([^\\d]*)(SSN|SocialNumber) | "
                    + "(SSN|SocialNumber)[^\\d]*(\\d{2}[.-]\\d{6})|"
                    + "(\\d{2}[.-]\\d{6})([^\\d]*(SSN|SocialNumber))";

代码输出:

    SSN 是 111-111-111
    222-222-222 可能是 SocialNumber,我女儿的 SSN
    SSN 将是 33-444444

如果您查看上面的输出,它根据标签(SSN|SocialNumber)正确捕获了约翰、他妻子和儿子的 SSN,但是遗漏了女儿的 SSN。请协助解决。

期望输出:

    SSN 是 111-111-111
    222-222-222 可能是 SocialNumber
    SSN :: 12.3456789
    SSN 将是 33-4444444
英文:

I have problem in capturing the SSN based on Tags(multiple words) reading before and after. The field is freetext user can enter SSN in any format. In the below input I have 2 different format XXX-XXX-XXX and XX-XXXXXXX.

Input String:

Hi i'm John my SSN is 111-111-111, then my wife 222-222-222 might be SocialNumber and my daughter SSN :: 12.3456789 and son SSN will be 33-4444444 

Tags: SSN,SocialNumber

RegeX:

	String pattern = "(SSN|SocialNumber)([^\\d]*)(\\d{3}[.-]\\d{3}[.-]\\d{3})|"
	    			+"(\\d{3}[.-]\\d{3}[.-]\\d{3})([^\\d]*)(SSN|SocialNumber) | " 
	    			+"(SSN|SocialNumber)[^\\d]*(\\d{2}[.-]\\d{6})|"
	    			+ "(\\d{2}[.-]\\d{6})([^\\d]*(SSN|SocialNumber))";

Code Output:

SSN is 111-111-111
222-222-222 might be SocialNumber and my daughter SSN 
 SSN will be 33-444444

If you see the above output it captures John, his wife and Son SSN correctly based on Tags(SSN|SocialNumber) but daughter SSN is missed. Please Assist

Expected Output:

SSN is 111-111-111
222-222-222 might be SocialNumber
SSN :: 12.3456789
SSN will be 33-4444444

答案1

得分: 1

请查看下面的正则表达式:

身份证号码为 | 是 SocialNumber|\d{3}-\d{3}-\d{3}|\d{2}-\d{7}|\d{2}\.\d{7}
  • 我基本上采用了两个字符串:身份证号码为 是 SocialNumber
  • 以及三种格式:ddd-ddd-ddddd-ddddddddd.ddddddd

此处进行测试

英文:

Try below regex:

SSN is | is SocialNumber|\d{3}-\d{3}-\d{3}|\d{2}-\d{7}|\d{2}\.\d{7}
  • I have basically taken 2 strings: SSN is and is SocialNumber.
  • And 3 formats: ddd-ddd-ddd or dd-ddddddd or dd.ddddddd

Test here.

huangapple
  • 本文由 发表于 2020年9月28日 01:56:42
  • 转载请务必保留本文链接:https://go.coder-hub.com/64091609.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定