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和lookbehind_Java_Regex_String - Fatal编程技术网

正则表达式中的Java和lookbehind

正则表达式中的Java和lookbehind,java,regex,string,Java,Regex,String,我正在尝试为以下内容查找正则表达式: 所有匹配@WORD@的世界都可以是任何单词,但只能在=之后。 我做了如下声明: (?此模式匹配一个equals,后跟一个可选空格和一个包含在@符号中的单词: Pattern pattern = Pattern.compile("= ?@(.*)@"); Matcher matcher = pattern.matcher("=@WORD@"); if (matcher.matches()) { System.out.println(matcher.grou

我正在尝试为以下内容查找正则表达式:

所有匹配
@WORD@
的世界都可以是任何单词,但只能在
=
之后。 我做了如下声明:

(?此模式匹配一个equals,后跟一个可选空格和一个包含在@符号中的单词:

Pattern pattern = Pattern.compile("= ?@(.*)@");
Matcher matcher = pattern.matcher("=@WORD@");
if (matcher.matches()) {
  System.out.println(matcher.group(1));
}

// Prints: "WORD"
除非我误解了您希望完成的任务,否则我看不出有必要进行回顾。但是,以下几点应该可以:

Pattern pattern = Pattern.compile("(?<== ?)@(.*)@");
Matcher matcher = pattern.matcher("= @WORD@");
if (matcher.find()) {
  System.out.println(matcher.group(1));
}

// Prints: "WORD"

Pattern-Pattern=Pattern.compile((?如果您使用的是look-behind,我假设您直接使用
Pattern
Matcher
来捕获干净的单词(
“@WORD@”
而不是
”=@WORD@“

如果确实如此,则只需在“后看”中添加可选的空白:

(?
Pattern pattern = Pattern.compile("(?<!= ?)@(.*)@");
Matcher matcher = pattern.matcher("=@WORD@");
System.out.println(matcher.find());

// Prints: "false"
Matcher m = Pattern.compile("(?<==\\s?)@.*?@").matcher("= @WORD@");
m.find();
System.out.println(m.group());