我使用这行代码提取两个字符串之间的所有文本" Origin"和" //"。我试图排除所有数字,但这不起作用,它抓住包括数字在内的所有数字。我的正则表达式是不正确的?
Pattern p = Pattern.compile(Pattern.quote("ORIGIN") + "(.*?[^0-9])" + Pattern.quote("//"), Pattern.DOTALL);
答案 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)没有结果(模式不匹配)