在扫描文本格式后,在android上的OCR项目上工作 在一个条件中超出字符串是
Tel:+91 345677890 Fax: +91 80 222767000
需要仅提取电话号码和传真号码。
在第二个例子中
xyaz@mail.com ,Fax:+91 80 222767000
我需要将传真,电话和电子邮件分成变量
这是否但无法找到解决方案
String cellfound="Tel:+91 345677890 Fax: +91 80 222767000 xyaz@mail.com";
Pattern cellp1= Pattern.compile(".*\\b(Mobile|M|M )\\b.*",Pattern.CASE_INSENSITIVE);
Matcher cellm1 = cellp1.matcher(cellnumber);
if (cellm1.matches()) {
cellfound=cellm1.group();
System.out.println("\nbefore cell found "+cellfound);
cellfound=cellfound.replaceAll("[^0-9]", " ");
System.out.println("\nfinal cell found from pattern :"+cellfound);
}
答案 0 :(得分:1)
这对你有用:
public static void main(String[] args) throws Exception {
String s ="Tel:+91 345677890 Fax: +91 80 222767000";
String[] arr = s.split("[a-zA-Z:]+\\s*");
for (String str : arr){
System.out.println(str);
}
String s2 = "xyaz@mail.com ,Fax:+91 80 222767000";
arr = s2.split(",\\w+:");
for (String str : arr){
System.out.println(str);
}
}
O / P:
<empty String here> // ignore this value
+91 345677890
+91 80 222767000
xyaz@mail.com
+91 80 222767000
答案 1 :(得分:0)
你可以试试这个:
(?<=Tel[:\\s])([+\\d\\s]+\\S)(?=\\s\\D)|(?<=Fax[:\\s])([+\\d\\s]+\\S)(?=\\s\\D)|(?<=\\s)(\\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,}\\b)
说明:
(?<=Tel[:\\s])([+\\d\\s]+\\S)(?=\\s\\D)
匹配数字和空格组,前面是“Tel:” - &gt;这会捕获电话号码。
(?<=Fax[:\\s])([+\\d\\s]+\\S)(?=\\s\\D)
匹配数字和空格组,其前面是“Fax:” - &gt;这会捕获传真号码
最后一个(?<=\\s)(\\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,}\\b)
是一个以空格开头的电子邮件正则表达式。
如您所见, Tel 和 Fax 具有几乎相同的正则表达式。我们可以将它组合成一个,但我想将它分开以获得更清晰的结果。
以下是示例代码:
import java.util.regex.*;
public class HelloWorld {
public static void main(String []args){
String test = "Tel:+91 345677890 Fax: +91 80 222767000 xyaz@mail.com";
String regex = "(?<=Tel[:\\s])([+\\d\\s]+\\S)(?=\\s\\D)|" // this captures the tel number
+ "(?<=Fax[:\\s])([+\\d\\s]+\\S)(?=\\s\\D)|" // this captures the fax number
+ "(?<=\\s)(\\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,}\\b)"; // this captures the email string
// Remember the CASE_INSENSITIVE option
Pattern re = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
Matcher m = re.matcher(test);
while (m.find()) {
System.out.println(m.group(0).trim());
}
}
}
预期结果如下:
+91 345677890
+91 80 222767000
xyaz@mail.com