Java 正则表达式获取@符号后的字符串
我有一个字符串,如下所示:Java 正则表达式获取@符号后的字符串,java,regex,Java,Regex,我有一个字符串,如下所示: private final static Pattern PATTERN_LOGIN = Pattern.compile("@[^\\s]+"); Matcher m = PATTERN_LOGIN.matcher("@78517700-1f01-11e3-a6b7-3c970e02b4ec , @68517700-1f01-11e3-a6b7-3c970e02b4ec, @98517700-1f01-11e3-a6b7-3c970e02b4ec, @38517700
private final static Pattern PATTERN_LOGIN = Pattern.compile("@[^\\s]+");
Matcher m = PATTERN_LOGIN.matcher("@78517700-1f01-11e3-a6b7-3c970e02b4ec , @68517700-1f01-11e3-a6b7-3c970e02b4ec, @98517700-1f01-11e3-a6b7-3c970e02b4ec, @38517700-1f01-11e3-a6b7-3c970e02b4ec");
while (m.find()) {
String mentionedLogin = m.group();
.......
}
78517700-1f01-11e3-a6b7-3c970e02b4ec
,68517700-1f01-11e3-a6b7-3c970e02b4ec
,98517700-1f01-11e3-a6b7-3c970e02b4ec
,38517700-1f01-11e3-a6b7-3C9702B4EC
我想提取@
之后的字符串
我的当前代码如下所示:
private final static Pattern PATTERN_LOGIN = Pattern.compile("@[^\\s]+");
Matcher m = PATTERN_LOGIN.matcher("@78517700-1f01-11e3-a6b7-3c970e02b4ec , @68517700-1f01-11e3-a6b7-3c970e02b4ec, @98517700-1f01-11e3-a6b7-3c970e02b4ec, @38517700-1f01-11e3-a6b7-3c970e02b4ec");
while (m.find()) {
String mentionedLogin = m.group();
.......
}
。。。但是
m.group()
给了我@78517700-1f01-11e3-a6b7-3c970e02b4ec
但是我想要78517700-1f01-11e3-a6b7-3c970e02b4ec
我会修改模式以省略at符号:
private final static Pattern PATTERN_LOGIN = Pattern.compile("@([^\\s]+)");
因此,第一个组仅为GUID您应该使用regex
“@([^\\s]+)”
,然后使用m.group(1)
,它返回捕获括号所捕获的内容()
m.group()。我将补充一些澄清。正如预期的那样,您的代码工作正常
正则表达式的意思是:匹配以@
开头的字符串,然后是一个或多个非空白字符。因此,如果省略括号,您将得到预期的完整字符串
其他响应中提到的括号用于标记捕获组。外行术语-正则表达式引擎对每个括号括起来的组进行多次匹配,在嵌套结构中运行。您只需使用@(.*)
阅读正则表达式中括号的用法-最重要的答案几乎肯定会使用它们,您自己了解它们很有用。