[英]“minus-sign” into this regular expression. How?
考虑:
String str = "XYhaku(ABH1235-123548)";
从上面的字符串中,我只需要“ABH1235-123548”,到目前为止我创建了一个正则表达式:
Pattern.compile("ABH\\d+")
但它返回false。 那么正确的正则表达式是什么呢?
\\d
只匹配数字。 要包含其他字符,请使用字符类:
Pattern.compile("ABH[\\d-]+")
请注意, -
必须放在字符类的第一个或最后一个,否则它将被视为范围指示符(例如[AZ]
匹配A
和Z
之间A
每个字母)。 避免这种情况的另一种方法是转义它,但这会为您的字符串增加两个反斜杠......
我会抓住括号中的任何内容:
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
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.