繁体   English   中英

“减号”到这个正则表达式中。 如何?

[英]“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]匹配AZ之间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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM