正则表达式不过滤掉数字

时间:2014-11-06 14:37:28

标签: java regex web-scraping

我使用这行代码提取两个字符串之间的所有文本" Origin"和" //"。我试图排除所有数字,但这不起作用,它抓住包括数字在内的所有数字。我的正则表达式是不正确的?

Pattern p = Pattern.compile(Pattern.quote("ORIGIN") + "(.*?[^0-9])" + Pattern.quote("//"), Pattern.DOTALL);

2 个答案:

答案 0 :(得分:0)

首先:您无需Pattern.quote()ORIGIN //;更重要的是,您问题中的文字提示Origin,而不是ORIGIN,所以我会改为使用它。

试试这个正则表达式:

private static final Pattern PATTERN
    = Pattern.compile("Origin([^0-9/]+)//");

注意:它也不允许Origin//之间的任何斜杠,这可能是也可能不是你想要的;但由于你的问题中没有例子,这是我能够集合的好解决方案。

答案 1 :(得分:0)

你想要的不清楚 1)如果你想获得文本(没有任何数字),即使有数字:

Pattern p = Pattern.compile("ORIGIN(.*)//");
Matcher m = p.matcher(str);
if(m.find())
    System.out.println(m.group(1).replaceAll("\\d+", ""));

2)如果你想获得没有数字的文字:

Pattern p = Pattern.compile("ORIGIN([^0-9]+)//");
Matcher m = p.matcher(str);
if(m.find())
    ystem.out.println(m.group(1));    

3)别的什么????????

例如:

字符串:ORIGINbla54bla//

1)字符串:blabla
2)没有结果(模式不匹配)