Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 正则表达式获取@符号后的字符串_Java_Regex - Fatal编程技术网

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()。我将补充一些澄清。正如预期的那样,您的代码工作正常

正则表达式的意思是:匹配以
@
开头的字符串,然后是一个或多个非空白字符。因此,如果省略括号,您将得到预期的完整字符串


其他响应中提到的括号用于标记捕获组。外行术语-正则表达式引擎对每个括号括起来的组进行多次匹配,在嵌套结构中运行。

您只需使用
@(.*)
阅读正则表达式中括号的用法-最重要的答案几乎肯定会使用它们,您自己了解它们很有用。