gpt4 book ai didi

Java从长文本中检测特殊模式

转载 作者:行者123 更新时间:2023-12-02 01:10:57 28 4
gpt4 key购买 nike

我正在读取 Aadhar 卡和 Pan 卡中的文本,并且正在读取字符串下方。

छ र्णां ;; _,
ज्यो

हें ष्ठछ्येप् ऽठमांआ (38७/8र्क्स "

,; जन्म वर्ष / 78६" ०1‘8६र्णीग् : 1992 खा … खा

पुरुष‘ “'व्'व् हैंप्टेंग्‘

` हु; ";:ळुहुं क्रौं र्मं’फु. ‘_य्; ,; ळु

` हं ` .म्च्हें :: "…. 'दृर्दु‘ऱ्क्ष्क्त

» ॰ -। "' ॰॰ ’ '|’ ""
8471 2211 6099 ,_

我有两项任务要做 -1.检测是否有aadhar卡。2. 如果是,则表示否。

我尝试过的代码

 String data = "b dn b fsd b fsd 6666 8888 9999 bsnfbsdb";
Pattern p = Pattern.compile( "^[a-zA-Z ]*\\d{4}\\s\\d{4}\\s\\d{4}[a-zA-Z ]*$" );
Matcher m = p.matcher( data );
if ( m.find() ) {
String s = m.group(0);
System.out.println(s);
}

但它不起作用,我得到了整个字符串

有没有更好的解决方案?或者我做错了什么?提前致谢。

最佳答案

您可以使用

(?<!\d)\d{4}(?:\s\d{4}){2}(?!\d)

请参阅regex demo .

详细信息

  • (?<!\d) - 紧邻左侧的数字不允许
  • \d{4} - 四位数字
  • (?:\s\d{4}){2} - 两次重复空格和四位数字
  • (?!\d) - 不允许紧接右边的数字

请参阅Java demo :

String data = "b dn b fsd b fsd 6666 8888 9999 bsnfbsdb";
Pattern p = Pattern.compile( "(?<!\\d)\\d{4}(?:\\s\\d{4}){2}(?!\\d)" );
Matcher m = p.matcher( data );
String s = "";
if ( m.find() ) {
s = m.group(0);
}
System.out.println("Result: " + s); // => Result: 6666 8888 9999

关于Java从长文本中检测特殊模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57685140/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com