String str =“XYhaku(ABH1235-123548)”;
从上面的字符串,我只需要“ABH1235-123548”,到目前为止我创建了正则表达式
Pattern.compile("ABH\\d+")
但它返回false。那么正确的正则表达式是什么。
答案 0 :(得分:1)
\d
仅匹配数字。要包含其他字符,请使用character class:
Pattern.compile("ABH[\\d-]+")
请注意,-
必须放在字符类的第一位或最后一位,否则它将被视为范围指示符([A-Z]
匹配A
和{{之间的每个字母1}},例如)。避免这种情况的另一种方法是逃避它,但是在你的字符串中添加两个反斜杠......
答案 1 :(得分:1)
我会抓住括号中的任何内容:
Pattern p = Pattern.compile("\\((?<data>[A-Z\\d]+\\-\\d+)\\)");
或者,如果你想更开放(任何括号):
Pattern p = Pattern.compile("\\((?<data>.+\\)\\)");
然后抓住它:
String s = /* some input */;
Matcher m = p.matcher(s);
if (m.find()) { //just find first
String tag = m.group("data"); //ABH1235-123548
}